การ copy ไฟล์ครั้งละมาก ๆ (หลักหมื่น หรือว่าเป็นแสน ๆ ไฟล์) ด้วย rsync ครับ

จากกระทู้ การ copy ไฟล์ครั้งละเยอะ ๆ (100,000 ไฟล์) และได้คุณ homoglobin มาโพสแนะนำเพิ่มเติมเอาไว้บน freemac.net เกี่ยวกับการใช้งานคำสั่ง rsync ผ่าน terminal เพื่อทำการ copy ไฟล์

ผมเลยลองทำตามดู และคิดว่าน่าจะดีถ้าเขียนเป็น how-to เก็บเอาไว้ สำหรับผู้ใช้งานทั่วไป ที่อาจจะไม่คุ้นกับการใช้งานคำสั่งผ่าน terminal ให้เห็นภาพทำตามได้ง่าย ๆ โดยเน้นบนพื้นฐานของผู้ใช้งานทั่วไปแบบบ้าน ๆ เป็นหลักครับ

note : จากการทดสอบสำหรับย้ายไฟล์ 38,000 กว่าไฟล์จาก hd ภายในเครื่องของผมเองไปยัง external hd ที่ต่อผ่าน firewire400 ใช้เวลาประมาณ 4 นาทีตั้งแต่เริ่มกระบวนการจนเสร็จสิ้นครับ ..

วิธีการ copy ไฟล์ผ่านคำสั่ง rsync บน terminal ครับ

ขั้นตอนที่ 1: กำหนดเป้าหมาย และปลายทางที่เราต้องการ

บน finder ให้เปิดเอาไว้ 2 หน้าต่างดังนี้ครับ

  1. หน้าต่างแรก เปิด folder ต้นทางที่เราต้องการจะ copy ไฟล์ข้างในนั้นทั้งหมดรอเอาไว้
  2. หน้าต่างที่สอง สร้าง folder ปลายทางที่เราต้องการ

ขั้นตอนที่ 2 : เปิด terminal.app ขึ้นมา โดยจะเรียกจากใน applications folder/ utilities หรือผ่าน spotlight แล้วพิมพ์ terminal ก็ได้ เราจะเห็นหน้าต่างเปล่า ๆ ของ terminal แบบนี้ครับ

rsync-01.png
ขั้นตอนที่ 3 : พิมพ์คำสั่ง rsync ลงใน terminal

คำสั่ง resync มีรูปแบบการใช้งานคร่าว ๆ ประมาณนี้ครับ

rsync -av [path ของ folder ต้นทาง] [path ของ folder ปลายทาง]

** คำสั่ง rsync, -av, folder ต้นทาง และ folder ปลายทาง มีเว้นวรรคคั่นอยู่นะครับ ...
อย่างในกรณีของผม เป็นแบบนี้

rsync -av /apache2/htdocs/folder ต้นทาง /Volumes/MyBook-Mac/folder ปลายทาง

โดยที่ [path ของ folder ต้นทาง] = /apache2/htdocs/folder ต้นทาง
และ [path ของ folder ปลายทาง]= /Volumes/MyBook-Mac/folder ปลายทาง

ทีนี้ สำหรับผู้ใช้ทั่วไป ที่ไม่ทราบว่าจะพิมพ์ path ของ folder ต้นทางกับ path ของ folder ปลายทางอย่างไรดีบน terminal ให้ทำแบบนี้ครับ

rsync-02.jpg

จาก finder ที่เราเปิดทิ้งเอาไว้ ให้ลองลาก folder ที่เราต้องการลงในบรรทัดของ terminal ดู เราจะเห็นว่า เค้าจะขึ้น path ของ folder นั้น ๆ ให้ แบบนี้ครับ

rsync-03.jpg

ที่เราต้องทำคือ พิมพ์คำสั่งว่า rsync -av ทิ้งเอาไว้บน terminal แล้วลาก folder ต้นทาง และ ปลายทาง จากบน finder มาลงใน terminal เพื่อให้คำสั่งสมบูรณ์

เมื่อได้ path ต้นทาง กับปลายทางลงในคำสั่ง rsync โดยสมบูรณ์แล้ว ให้กด enter ถ้าไม่มีอะไรผิดพลาด เราจะเห็นว่าเขาเริ่มทำงานย้ายไฟล์ให้เราครับ

โดยไฟล์ที่มีปัญหา จะถูกแสดงขึ้นมาก่อนพร้อมด้วยระบุว่าทำไมถึงย้ายไม่ได้ให้เราทราบด้วย หลังจากนั้นก็จะเริ่มการย้ายไฟล์ตามปรกติทั่วไป เราจะเห็นหน้าต่าง terminal แสดงไฟล์ที่ถูกย้ายไล่ลงมาเรื่อย ๆ และเมื่อเสร็จกระบวนการแล้ว เขาจะแจ้งเรามาแบบนี้ครับ

rsync-04.jpg

หมดแล้วครับ ลองนำไปใช้งานกันดู หวังว่าจะเป็นประโยชน์บ้างไม่มากก็น้อยนะครับ =)