ศูนย์คอมพิวเตอร์และเครือข่าย

ทิป เทคนิค ทั่วไป สำหรับ Admin => สาระความรู้ทั่วไปเกี่ยวกับ IT/Computer => หัวข้อที่ตั้งโดย: ไอที พลาซา เมื่อ 18 มิ.ย, 2025, 12:59 หลังเที่ยง

ชื่อ: การใช้งาน Rsync
โดย: ไอที พลาซา เมื่อ 18 มิ.ย, 2025, 12:59 หลังเที่ยง
Rsync

Rsync เป็นโปรแกรม ไว้สำหรับ Backup ข้อมูล เป็น Directory หนึ่งไปยังอีก Directory ทำงานได้หลายโหมด หลักการทำงานมันจะเปรียบเทียบไฟล์ ให้เรา ถ้าไฟล์เดิมมีอยู่แล้วและยังไม่มีการเปลี่ยนแปลงอะไร ก็จะข้ามไฟล์นั้น ไป ทำให้เวลาในการ Backup ข้อมูลน้อย นอกจากนี้ ถ้านำ rsync ใช้ร่วมกับ ssh ก็สามารถ Backup ไฟล์ข้าม Server ได้ ซึ่ง rsync มีให้ใช้กับทุก OS นั่นหมายความว่าเรา สามารถ Backup Directory ข้าม Server ข้าม OS ได้

 วิธีใช้งาน rsync มาดูคำสั่ง  (ถ้า OS ที่ใช้ยังไม่มีโปรแกรมนี้ก็ติดตั้งก่อน)
 แบบแรก Backup Directory ใน Server เดียวกันไปไว้อีก Directory หนึ่งเช่น
 ต้องการ Backup /home ไปไวทีที่ /backup/xxxx/
 ใช้คำสั่ง (ตัวอย่างใช้ OS FreeBSD)

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

ความหมาย Option แต่ละตัว
 -a คือ archive ทำให้ ไฟล์ตันฉบับกับไฟล์ปลายทางเหมือนกันทุกอย่าง
 -v คือ verbose ให้แสดงรายละเอียดระหว่างทำงานขึ้นมาบนหน้าจอ
 --exclude คือไม่รวมไฟล์ สามารถให้ รูปแบบ ได้เช่น ตามตัวอย่างหมายความว่า ไม่เอา ไฟล์ทุกไฟล์ที่ .gz ที่อยู่ใน
 home/admin/admin_backups/ *
 จากบทความที่แล้ว มาใช้ rsync ในการ Backup ข้อมูลกัน เป็นการ Backup ไฟล์ในเครื่องเดียวกัน

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

โปรแกรมที่ต้องการใช้ คือ rsync และ SSH Server

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

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

ตัวอย่าง การ Backup ด้วยการ Transfer ไฟล์จาก Server IP xxx.xxx.xxx.xxx มาไว้ในเครื่องที่รันคำสั่ง
(https://server.gitbook.io/~gitbook/image?url=https%3A%2F%2F2243606846-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LBCEf1lCbn-vUz6qW8E%252F-LBCPNwLtT01yzM5nhXF%252F-LBCPe45UQTl79wmpjvb%252Fimage.png%3Falt%3Dmedia%26token%3D0791d2b5-bb6a-4431-8492-2033a204802a&width=400&dpr=3&quality=100&sign=d1954a49&sv=2)
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


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      แสดงความช่วยเหลือ