Ref: Gemini
ถ้าโฟลเดอร์ใน Linux Server มีขนาดประมาณ 28 GB และต้องการคัดลอกเป็นโฟลเดอร์ใหม่ ผมแนะนำใช้ rsync ครับ เพราะเหมาะกับข้อมูลขนาดใหญ่ สามารถแสดงความคืบหน้า และสั่งต่อได้หากการคัดลอกหยุดกลางคัน
วิธีที่ 1: ใช้ rsync (แนะนำ)
สมมติว่าต้องการคัดลอกโฟลเดอร์ /home/user/myfolder ไปเป็น /home/user/myfolder_backup
rsync -a --info=progress2 /home/user/myfolder/ /home/user/myfolder_backup/ความหมายของคำสั่ง
rsyncใช้คัดลอกและซิงก์ข้อมูล-aรักษาสิทธิ์ไฟล์ เวลา และโครงสร้างโฟลเดอร์--info=progress2แสดงความคืบหน้ารวมของการคัดลอก/home/user/myfolder/คือโฟลเดอร์ต้นทาง/home/user/myfolder_backup/คือโฟลเดอร์ปลายทาง
ข้อควรระวัง: เครื่องหมาย / หลังชื่อโฟลเดอร์ต้นทาง หมายถึงคัดลอก ข้อมูลภายในโฟลเดอร์ ไปยังปลายทาง
หากต้องการคัดลอกทั้งโฟลเดอร์โดยให้มีโฟลเดอร์ต้นทางอยู่ข้างใน ใช้:
rsync -a --info=progress2 /home/user/myfolder /home/user/myfolder_backup/ผลลัพธ์จะเป็น /home/user/myfolder_backup/myfolder/
วิธีที่ 2: ใช้ cp แบบง่าย (ไม่มีสถานะบอกว่าถึงใหนแล้ว)
cp -a /home/user/myfolder /home/user/myfolder_backup-aรักษาคุณสมบัติไฟล์และโฟลเดอร์ไม่มีแถบแสดงความคืบหน้าโดยค่าเริ่มต้น
หากข้อมูลหยุดคัดลอก จะไม่มีระบบ resume ที่สะดวกเหมือน
rsync
วิธีที่ 3: ใช้ rsync ผ่าน SSH ระหว่าง Server
หากต้นทางอยู่ Server 1 และต้องการคัดลอกไป Server 2:
rsync -a --info=progress2 --partial \
/home/user/myfolder/ \
user@192.168.1.1:/home/user/myfolder_backup/--partial ช่วยเก็บไฟล์ที่คัดลอกไม่เสร็จไว้ เพื่อให้สั่ง rsync ซ้ำและทำงานต่อได้สะดวกขึ้น
ก่อนคัดลอกข้อมูล 28 GB ควรตรวจสอบพื้นที่ก่อน
df -hดูพื้นที่ว่างของดิสก์ปลายทาง และตรวจสอบขนาดโฟลเดอร์ต้นทาง:
du -sh /home/user/myfolderคำแนะนำของผม: ถ้าคัดลอกภายในเครื่องเดียวกัน ใช้ rsync -a --info=progress2 ครับ แต่ถ้าต้องคัดลอกระหว่าง Server ผ่าน SSH ก็ใช้ rsync ได้เช่นกัน
ขอถามเพิ่มเติมนิดหนึ่งครับ: คุณจะคัดลอกโฟลเดอร์ 28 GB ภายใน Server เครื่องเดียวกัน หรือ จาก Server เครื่องหนึ่งไปอีก Server หนึ่งผ่านเครือข่าย ครับ? ผมจะได้แนะนำคำสั่งที่เหมาะสมที่สุดให้ครับ
เพิ่มเติม
- กรณี rsync แต่ลืม sudo ให้ทำการยกเลิก process โดยหา process id ก่อนแล้วค่อย kill process
ps aux | grep '[r]sync'
- ผลลัพธ์
user 3722318 4.1 0.0 74652 31044 pts/3 D+ 20:33 1:14 rsync -a --info=progress2 ./folder/ ./folder_bak/
user 3722320 0.1 0.0 49636 9764 pts/3 S+ 20:33 0:01 rsync -a --info=progress2 ./folder/ ./folder_bak/
user 3722321 4.2 0.0 47380 10076 pts/3 S+ 20:33 1:16 rsync -a --info=progress2 ./folder/ ./folder_bak
- สั่งหยุดทำงาน
kill -INT 3722318 3722320 3722321
- ตรวจสอบ
ps -o pid,stat,cmd -p 3722318,3722320,3722321
- ถ้ายังไม่หยุด
kill -TERM 3722318 3722320 3722321