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

ikok's picture
10285
posts

จากกระทู้ การ 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

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

Comments

epw's picture
6
posts

แล้วก๊อปผ่านเครื่องในวง lan

แล้วก๊อปผ่านเครื่องในวง lan ได้มั้ยครับ

#1
ikok's picture
10285
posts

ผมไม่มีเครื่องให้ลองครับ

แต่ผมเดาว่าน่าจะได้ตราบใดที่เราทราบ path ปลายทาง หรือไม่ก็ ip address ของเครื่องปลายทางครับ

#2
epw's picture
6
posts

ขอบคุณครับ ใช้ได้ครับ

ขอบคุณครับ ใช้ได้ครับ พอดีนึกได้ว่าทำไมไม่ลองเอง

#3
amd3's picture
58
posts

รับทราบ

ยิ้มปากกว้าง ยิ้มปากกว้าง

#4
been's picture
1
posts

ผมก๊อปไฟล์ลงในแฟลตไดร์ไม่ได้ค

ผมก๊อปไฟล์ลงในแฟลตไดร์ไม่ได้คับ คลิกขวาแล้วมันให้ถอดแฟลตไดร์อย่างเดียว ทำไงดีคับ ???

#5
minemind's picture
3876
posts

format ให้เป็น fat32 หรือ

format ให้เป็น fat32 หรือ exfat ครับ

#6