> For the complete documentation index, see [llms.txt](https://server.gitbook.io/setservermsu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://server.gitbook.io/setservermsu/rsync.md).

# Rsync

Rsync เป็นโปรแกรม ไว้สำหรับ Backup ข้อมูล เป็น Directory หนึ่งไปยังอีก Directory ทำงานได้หลายโหมด หลักการทำงานมันจะเปรียบเทียบไฟล์ ให้เรา ถ้าไฟล์เดิมมีอยู่แล้วและยังไม่มีการเปลี่ยนแปลงอะไร ก็จะข้ามไฟล์นั้น ไป ทำให้เวลาในการ Backup ข้อมูลน้อย นอกจากนี้ ถ้านำ rsync ใช้ร่วมกับ ssh ก็สามารถ Backup ไฟล์ข้าม Server ได้ ซึ่ง rsync มีให้ใช้กับทุก OS นั่นหมายความว่าเรา สามารถ Backup Directory ข้าม Server ข้าม OS ได้ \
\
&#x20;วิธีใช้งาน rsync มาดูคำสั่ง  (ถ้า OS ที่ใช้ยังไม่มีโปรแกรมนี้ก็ติดตั้งก่อน)\
&#x20;แบบแรก Backup Directory ใน Server เดียวกันไปไว้อีก Directory หนึ่งเช่น\
&#x20;ต้องการ Backup /home ไปไวทีที่ /backup/xxxx/\
&#x20;ใช้คำสั่ง (ตัวอย่างใช้ OS FreeBSD)

rsync -av --exclude="home/admin/admin\_backups/\*.gz" /home /backup/xxx

ความหมาย Option แต่ละตัว \
&#x20;-a คือ archive ทำให้ ไฟล์ตันฉบับกับไฟล์ปลายทางเหมือนกันทุกอย่าง \
&#x20;-v คือ verbose ให้แสดงรายละเอียดระหว่างทำงานขึ้นมาบนหน้าจอ\
&#x20;\--exclude คือไม่รวมไฟล์ สามารถให้ รูปแบบ ได้เช่น ตามตัวอย่างหมายความว่า ไม่เอา ไฟล์ทุกไฟล์ที่ .gz ที่อยู่ใน \
&#x20;home/admin/admin\_backups/ \*\
&#x20;จากบทความที่แล้ว [มาใช้ rsync ในการ Backup ข้อมูลกัน ](http://www.mindphp.com/66-stories/server-hosting/3220-rsync-backup.html)เป็นการ Backup ไฟล์ในเครื่องเดียวกัน

**การ** **Backup ไฟล์จาก Server หนึ่งไปไว้อีก Server หนึ่ง**

โปรแกรมที่ต้องการใช้ คือ rsync และ [SSH Server](http://www.mindphp.com/66-stories/server-hosting/2426-ssh-cpanel-host-centos.html)

รูปแบบคำสั่ง

rsync -options -e ต้นทาง ปลายทาง ทั้งต้นทาง และ ปลายทางสามารถใช้ SSH ได้

ตัวอย่าง การ Backup ด้วยการ Transfer ไฟล์จาก Server IP xxx.xxx.xxx.xxx มาไว้ในเครื่องที่รันคำสั่ง

rsync -av --delete --exclude="home/admin" -e ssh <root@xxx.xxx.xxx.xxx>:/home /backup/xxx

**อธิบายความหมาย**

เป็นการ copy ไฟล์จาก server ip xxx.xxx.xxx.xxx folder home ทั้ง folder รวม folder ย่อยทุก folder ยกเว้น /home/admin

มาไว้ที่ /backup/xxx ของเครื่องที่รันคำสั่งนี้

\--delete ให้ลบไฟล์ปลายทางถ้าไฟล์ต้นทางถูกลบไป

เพิ่มเติม

ถ้า xxx.xxx.xxx.xxx ไม่ได้ใช้ port 22 ให้ใส่ options

-p เพิ่มเข้าไปหลัง ip เช่น -p 1111

**ตัวอย่างการใช้คำสั่ง** **rsync เพื่อ copy file จากเครื่อง client ไปยังเครื่อง server โดยการ copy file ชื่อไฟล์ (filetest.tar) จากเครื่อง client ไปยังเครื่อง server**

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCPNwLtT01yzM5nhXF%2F-LBCPe45UQTl79wmpjvb%2Fimage.png?alt=media\&token=0791d2b5-bb6a-4431-8492-2033a204802a)

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCPNwLtT01yzM5nhXF%2F-LBCPgEenGBbY_vf1u2u%2Fimage.png?alt=media\&token=fb225405-2744-4092-bffe-9d722bb5b97b)

rsync -av /home/ter/Desktop/testfile.tar abcd1234\@192.168.1.36:/home/abcd1234/Dekstop

**คำสั่ง** **rsync –help**

**-v , --verbose** เพิ่มคำฟุ่มเฟื่อย

**-q , --quiet**     ปราบปรามข้อความที่ไม่ผิดพลาด

**--no -motd**     ระงับMOTDโหมด daemon (ดู caveat)

**- c , --checksum** ข้ามเวลาตรวจสอบไม่ใช้ mod-time และ size

**-a , --archive** โหมดเก็บข้อมูล เท่ากับ-rlptgoD (ไม่มี-H , -A , -X )

**--no-OPTION** ปิดตัวเลือกโดยนัย(เช่น--no-D )

**- r , --recursive recurse** ลงในไดเร็กทอรี

**- R , --relative** ใช้ชื่อเส้นทางสัมพัทธ์

**--no-implied-dirs** ไม่ได้ส่ง dirs โดยนัยกับ - สัมพันธ์

**-b , --backup** ทำการสำรองข้อมูล (ดู--suffix & --backup-dir )

**--backup-dir = DIR** ทำการสำรองข้อมูลลงในลำดับชั้นตามDIR

**- suffix = SUFFIX** ต่อท้ายสำรอง(ค่าเริ่มต้น\~ w / o - สำรองข้อมูล - dir )

**-u , --update** ข้ามไฟล์ที่ใหม่กว่าในเครื่องรับ

**-- inplace**       อัปเดตไฟล์ปลายทางในตำแหน่ง

**-- append**      ผนวกข้อมูลลงในไฟล์ที่สั้นลง

**--append-verify** - ใช้ w / ข้อมูลเก่าใน checksum ไฟล์

**- d , --dirs**      โอนไดเรกทอรีโดยไม่ต้องทำใหม่

**-l , --links**       คัดลอกsymlinksเป็น symlinks

**-L, --copy-links**  แปลงไฟล์ symlink เป็นไฟล์ referent / dir

**--copy-unsafe-links**  มีการแปลงเฉพาะลิงก์ที่ "ไม่ปลอดภัย" เท่านั้น

**--safe-links**    ละเว้นการเชื่อมโยงไปยังจุดที่อยู่นอกต้นไม้

**-k, --copy-dirlinks**      เปลี่ยน symlink เป็น dir ไปเป็น referir dir

**-K, --keep-dirlinks**  รักษา dir ที่เชื่อมโยงกับผู้รับเป็น dir

**-H, --hard-links**  รักษาลิงก์ที่ยาก

**-p, --perms**    รักษาสิทธิ์

**-E, --executability** รักษาความสามารถในการปฏิบัติการได้

**--chmod=CHMOD**     ส่งผลกระทบต่อสิทธิ์การใช้งานแฟ้มและ / หรือไดเรกทอรี

**-A , --acls**  รักษาACL (นัย-p )

**-X , --xattrs**   รักษาคุณลักษณะเพิ่มเติม

**-o, --owner**  สงวนสิทธิ์เจ้าของ ( ผู้ใช้ superเท่านั้น)

**-g, --group**     รักษากลุ่ม

**--devices**        เก็บรักษาไฟล์อุปกรณ์ (เฉพาะผู้ใช้ super เท่านั้น)

**--specials**       เก็บไฟล์พิเศษ

**-D**                   เช่นเดียวกับ- อุปกรณ์ - สเปเชียล

**-t, --times**       รักษาเวลาในการปรับเปลี่ยน

**-O , --omit-dir-times** ละเว้นไดเรกทอรีจากช่วงเวลา

**--super**  รับกิจกรรมผู้ใช้ super-user

**--fake-super**  เก็บ / กู้คืน attented มีสิทธิ์ใช้ xattrs

**-S, --sparse**  จัดการไฟล์ที่เบาบางได้อย่างมีประสิทธิภาพ

**-n , --dry-run** ทำการทดลองใช้โดยไม่มีการเปลี่ยนแปลง

**-W , --whole-file**  คัดลอกไฟล์ทั้งหมด (w / o delta-xfer algorithm)

**-x , --one-file-system**  อย่าข้ามขอบเขตของระบบแฟ้ม

**-B , - block-size = SIZE**  บังคับให้มีการบล็อก checksum คงที่

**-e , --rsh = COMMAND**  ระบุเปลือกระยะไกลที่จะใช้

**--rsync-path = PROGRAM**     ระบุrsyncเพื่อรันบนเครื่องระยะไกล

**--existing**  ข้ามการสร้างไฟล์ใหม่ในเครื่องรับ

**--ignore-existing** ข้ามการอัปเดตไฟล์ที่มีอยู่ในเครื่องรับ

**--remove-source-files**  ผู้ส่งลบไฟล์ที่ซิงโครไนซ์ (ไม่ใช่ dir)

**--del**  นามแฝงสำหรับ--deelete-during

**--delete**  ลบไฟล์ที่ไม่เกี่ยวข้องออกจาก dirs ปลายทาง

**--delete-before**            เครื่องรับจะลบออกก่อนที่จะถ่ายโอน

**--delete-during**           ลบระหว่างการถ่ายโอน

**--delete-delay**  พบการลบในระหว่างลบหลังจาก

**--delete-after** ผู้รับจะลบหลังจากการโอนย้ายไม่ใช่ในระหว่างดำเนินการ

**--delete-excluded**        ลบไฟล์ที่ยกเว้นจาก dirs dirs

**--ignore-errors**           ลบแม้ว่าจะมีข้อผิดพลาดI / Oก็ตาม

**--force**            บังคับให้ลบ dirs แม้ว่าจะไม่ว่าง

**--max-delete = NUM**  ไม่ลบไฟล์มากกว่าNUM รายการ

**--max-size = SIZE**      ไม่ถ่ายโอนไฟล์ใด ๆ ที่ใหญ่กว่าSIZE

**- min-size = SIZE**       ไม่ถ่ายโอนไฟล์ใด ๆ ที่มีขนาดเล็กกว่าSIZE

**--partial**         เก็บไฟล์ที่ถ่ายโอนไว้บางส่วน

**--partier-dir = DIR**    ใส่ไฟล์ที่ถ่ายโอนบางส่วนลงในDIR

**--delay-updates**          ใส่ไฟล์ที่อัปเดตทั้งหมดไว้ในตำแหน่งสุดท้าย

**-m , --prune-empty-dirs**        ตัดรายการไดเรกทอรีว่างจากรายการไฟล์

**--numeric-ids**  ไม่กำหนดค่า uid / gid ตามชื่อผู้ใช้ / กลุ่ม

**--timeout = SECONDS**          ตั้งค่า I / O timeout เป็นวินาที

**--contimeout = SECONDS**  กำหนดเวลาการเชื่อมต่อ daemon ในไม่กี่วินาที

**-I , --ignore-times**       อย่าข้ามไฟล์ที่ตรงกับขนาดและเวลา

**--size-only**  ข้ามไฟล์ที่ตรงกับขนาด

**--modify-window = NUM**      เปรียบเทียบ mod-times กับความถูกต้องที่ลดลง

**-T , --temp-dir = DIR**  สร้างไฟล์ชั่วคราวในไดเรกทอรีDIR

**-y, --fuzzy**      หาไฟล์ที่คล้ายกันสำหรับพื้นฐานถ้าไม่มีไฟล์ปลายทาง

**--compare-dest = DIR**            เปรียบเทียบไฟล์ที่ได้รับเทียบกับDIR

**--copy-dest = DIR**      ... รวมสำเนาของไฟล์ที่ไม่ได้รับการเปลี่ยนแปลง

**--link-dest = DIR**        hardlink ไปยังไฟล์ในDIRเมื่อไม่มีการเปลี่ยนแปลง

**-z , --compress**            บีบอัดข้อมูลไฟล์ระหว่างการถ่ายโอน

**--compress-level = NUM**        ตั้งระดับการบีบอัดอย่างชัดเจน

**--skip-compress = LIST**        ข้ามการบีบอัดไฟล์ที่มีคำต่อท้ายในLIST

**-C , --cvs-exclude**       ละเว้นไฟล์แบบเดียวกับที่CVSทำ

**-f , --filter = RULE**     เพิ่มกฎการกรองไฟล์

**-F**   เช่นเดียวกันกับ --filter = 'dir-merge /.rsync-filter'

**--exclude = PATTERN**          ยกเว้นไฟล์ที่ตรงกับPATTERN

**--exclude-from=FILE**            อ่านไม่รวมรูปแบบจากFILE

**--include = PATTERN**          ไม่รวมไฟล์ที่ตรงกับPATTERN

**--include-from = FILE**          อ่านรวมรูปแบบจากFILE

**--files-from = FILE**    อ่านรายการชื่อไฟล์ต้นทางจากFILE

**-0**, **--from0**     \* ไฟล์จาก / ตัวกรองทั้งหมดจะถูกคั่นด้วย 0 วินาที

**-s , - protect-args**        ไม่มีช่องว่าง; อักขระ wildcard เท่านั้น

**--address = ADDRESS**          ผูกที่อยู่สำหรับซ็อกเก็ตขาออกไปยัง daemon

**--port = PORT**           ระบุหมายเลขพอร์ตสลับสองเท่า

**--sockopts = OPTIONS**         ระบุตัวเลือกTCP ที่กำหนดเอง

**--blocking-io**   ใช้การปิดกั้นI / Oสำหรับรีโมตเชลล์

**--stats**             ให้สถิติการถ่ายโอนไฟล์

-**8 , --8-bit-output**       ปล่อยให้อักขระที่เป็นบิตสูงไม่อยู่ในเอาต์พุต

**-h, --human-readable** ตัวเลขผลลัพธ์ในรูปแบบที่มนุษย์สามารถอ่านได้

**--progress**      แสดงความคืบหน้าในระหว่างการถ่ายโอน

**-P**  เช่นเดียวกับ- ละอองเกเรียม -

**-i, --itemize-changes**  นำเสนอข้อมูลสรุปเกี่ยวกับการเปลี่ยนแปลงทั้งหมด

**--out-format = FORMAT**      อัปเดตเอาท์พุทโดยใช้FORMAT ที่ระบุ

**--log-file = FILE**         ล็อกสิ่งที่เรากำลังทำกับFILE ที่ระบุ

**--log-file-format = FMT**        บันทึกการอัพเดตโดยใช้FMT ที่ระบุ

**--password-file = FILE**          อ่านรหัสผ่าน daemon-access จากFILE

**--list-only** รายการไฟล์แทนการคัดลอกพวกเขา

**--bwlimit = KBPS**      จำกัด แบนด์วิดท์ I / O; KBytesต่อวินาที

**--write-batch = FILE** เขียนการอัปเดตแบทช์เป็นFILE

**--only-write-batch=FILE**      เช่น- เขียนชุดแต่ไม่มีการปรับปรุง dest

**--read-batch = FILE** อ่านการอัปเดตเป็นแบทช์จากFILE

**--protocol = NUM**      บังคับใช้โปรโตคอลรุ่นเก่าที่จะใช้

**--iconv = CONVERT\_SPEC** ขอเปลี่ยนชื่อไฟล์ของcharset

**- checksum-seed = NUM**       ชุดบล็อก / ไฟล์เมล็ดตรวจสอบ (ขั้นสูง)

**-4 , --ipv4**       ชอบIPv4

**-6 , --ipv6**       ชอบIPv6

**--version**        พิมพ์หมายเลขรุ่น

**-h , --help**      แสดงความช่วยเหลือ
