โดยปกติการย้ายข้อมูลข้ามเครื่องบน Windows อาจจะไม่ยากเท่าไหร่ แต่บน Linux แล้วละก็ ถือเป็นความท้าทายเลยทีเดียว เช่น หากเราต้องการ Copy ข้อมูลไปยังอีกเครื่องเพื่อสำรองข้อมูล จะมีปัญหาเรื่องของ Permission เข้ามาเกี่ยวข้อง ซึ่งต้องทำการบีบอัดโดยใช้ tar หรือ zip ซึ่งผมเคยเขียนบทความไปแล้ว แต่หากระหว่างทำการ Copy มีการเปลี่ยนแปลงไฟล์ เราอาจจะต้องเริ่มใหม่ทั้งหมด ซึงมันไม่ดีแน่ ๆ หรือถ้าเปรียบเทียบกับการ Backup เราจะเรียกว่า Incremental ทำให้เราไม่ต้องเสียเวลา Backup ในส่วนที่ข้อมูลไม่ได้เปลี่ยนแปลง
Syntax
rsync [option] [source] [destination]
-a --archive :archive mode equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-v --verbose :verbose
-z --compress :compress file data
-P same as --partial --progress :for more two options protect interrupt
ในส่วนของ Archive Mode ซึ่งจะรวมโหมด -rlptgoD เข้าไว้ด้วยกัน แต่จะไม่รวมโหมด -H,-A,-X
Include
-r --recursive :recurse into directories
-l --links :copy symlinks as symlinks
-p --perms :preserve permissions
-t --times :preserve modification times
-g --group :preserve group
-o --owner :preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
Exclude
-H, --hard-links preserve hard links
-A, --acls preserve ACLs (implies -p)
-X, --xattrs preserve extended attributes
Default
โดยคำสั่งที่นิยมใช้กันสำหรับ Backup คือ -avzP ซึ่งก็จะทำ Archive Mode, Verbose แสดงรายละเอียดการ Copy, Compress ทำการบีบอัดไฟล์ และรักษา Partial Files ของ Destination ให้เหมือนกันกับ Source การใช้ rsync ข้าม Host จะเป็นการใช้ ssh ซึ่งจะมีการสร้าง Key ( SHA256 ) และจะมีการถามหา password ทุกครั้ง
Get Started
- Install ก่อนอื่นเราต้องไปติดตั้ง Package กันก่อน
# apt-get install rsync -y
- Push ส่งข้อมูลจาก Source ไปยัง Destination
# rsync -av /tmp/src/xxx.tar.gz root@lab-dst.lab.local:/tmp/dst/
- Pull ดึงข้อมูลจาก Source ไปยัง Destination
# rsync -av root@lab-src.lab.local:/tmp/src/xxx.tar.gz /tmp/dst/
อ่านเพิ่มเติม : https://bit.ly/2woPg45
Leave a Reply