Sync File with Rsync on Linux

โดยปกติการย้ายข้อมูลข้ามเครื่องบน 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

Your email address will not be published. Required fields are marked *