rsync เป็นเครื่องมือบรรทัดคำสั่งที่ใช้งานได้ฟรีที่ให้คุณซิงค์ไฟล์ทั้งแบบโลคัลและระยะไกล คุณสามารถถ่ายโอนไฟล์และไดเร็กทอรีได้
สิ่งนี้ทำให้มีประโยชน์มากสำหรับการย้ายข้อมูล การสำรองข้อมูล และการมิเรอร์ ทำให้เหมาะสำหรับผู้ดูแลเว็บและผู้ดูแลระบบสำหรับงานถ่ายโอนข้อมูลที่เกิดซ้ำ
บทความนี้จะสอนเราถึงวิธีการทำงานของ Rysnc และแสดงตัวอย่างที่เป็นประโยชน์
rsync ทำงานอย่างไร
rsync เป็นยูทิลิตีบรรทัดคำสั่งการซิงโครไนซ์ระยะไกลสำหรับระบบที่คล้าย Unix ช่วยให้ผู้ใช้สามารถถ่ายโอน/ซิงค์ไฟล์ระหว่างเครื่องหรือสองโฮสต์ได้อย่างราบรื่น
ภายใต้ประทุน rsync ใช้อัลกอริทึมการถ่ายโอนเดลต้า อัลกอริทึมนี้เกี่ยวข้องกับการคัดลอกความแตกต่างระหว่างสองไฟล์ระหว่างสองโฮสต์ (ต้นทางและปลายทาง) ต้นทางและปลายทางสามารถเป็นแบบโลคัลหรือรีโมต คำสั่ง rsync สามารถดำเนินงานคัดลอก/ซิงค์ข้อมูลได้สองวิธี เหล่านี้คือ:
- ใช้ ssh, rsh เพื่อคัดลอก/ซิงค์ระหว่างสองโฮสต์
- ใช้ TCP rsync daemon สำหรับการคัดลอก/ซิงค์
เนื่องจากได้รับการออกแบบมาให้ทำงานในระบบที่คล้าย Unix จึงใช้งานได้ใน Linux ด้วย
rsync กระบวนการทีละขั้นตอนใช้ดังนี้:
- Rsync ใช้ SSH เพื่อเชื่อมต่อกับโฮสต์ระยะไกลและขอรหัสผ่าน
- เมื่อเชื่อมต่อแล้ว rsync ของรีโมตโฮสต์จะสื่อสารกับต้นทาง
- จากนั้นโปรแกรมเหล่านี้จะกำหนดไฟล์และไดเร็กทอรีที่ต้องการซิงค์ ใช้อัลกอริธึมการถ่ายโอนเดลต้าเพื่อตรวจสอบความแตกต่างระหว่างไฟล์
หากคำสั่ง rsync ไม่พบไฟล์บนรีโมตแต่ไม่พบบนโฮสต์ คำสั่งจะคัดลอกและถ่ายโอนไปยังระบบโฮสต์ ในทำนองเดียวกัน สำหรับไฟล์ที่มีอยู่แล้ว (ทั้งบนโฮสต์และรีโมต) ไฟล์จะคัดลอกส่วนต่างระหว่างไฟล์เหล่านั้น (เช่น ส่วนที่เปลี่ยนแปลง) สุดท้าย มันจะละเว้นไฟล์ที่มีอยู่ในทั้งสองระบบโดยไม่มีการแก้ไข
คำสั่ง rsync บรรลุการอัพเดตส่วนเพิ่มโดยการจัดเก็บส่วนต่างในไฟล์ชั่วคราวก่อนที่จะพุชไปยังปลายทาง
ก่อนคุณเริ่ม:
- คุณต้องมีสิทธิ์ root หรือ sudo
- มีการเข้าถึงเทอร์มินัล/บรรทัดคำสั่ง
- การเข้าถึง SSH สำหรับการเรียกใช้คำสั่ง rsync อย่างปลอดภัย
- คุณต้องมีเครื่องสองเครื่องเพื่อสร้าง rsync
สำหรับบทช่วยสอน เราจะใช้ Linux Mint 21.1 Vera คุณสามารถทำตามคำแนะนำได้อย่างง่ายดายโดยไม่มีปัญหาในการใช้ Linux distro อื่น ๆ
เหตุใดจึงต้องใช้ rsync มากกว่า Scp
Scp (สำเนาที่ปลอดภัย) เป็นโปรโตคอลบรรทัดคำสั่งยอดนิยมที่ช่วยให้ผู้ใช้คัดลอกไฟล์ มันเป็นไปตามแนวทางเชิงเส้นในการคัดลอก ซึ่งหมายความว่าเพียงแค่คัดลอกไฟล์จากต้นทางไปยังปลายทาง เพื่อความปลอดภัย จะใช้ SSH
ไวยากรณ์คำสั่ง scp เป็นดังนี้:
scp option SOURCE DESTINATION
อย่างไรก็ตาม คำถามยังคงอยู่ เหตุใดจึงต้องใช้ rsync บน scp
การใช้ rsync มีประโยชน์หลายอย่าง สิทธิประโยชน์เหล่านี้รวมถึง:
- การดำเนินการที่เร็วขึ้น: rsync เร็วกว่า scp เนื่องจากใช้โปรโตคอลการอัปเดตจากระยะไกล สิ่งนี้ทำให้สามารถถ่ายโอนเฉพาะความแตกต่างแทนที่จะเป็นทั้งไฟล์ ดังนั้น หากคุณตั้งค่าการซิงค์เป็นประจำในช่วงเวลาหนึ่ง คุณจะต้องทำสำเนาแบบเต็มในครั้งแรกเท่านั้น ตั้งแต่ครั้งหน้าเป็นต้นไป ระบบจะคัดลอกเฉพาะส่วนที่อัปเดตโดยใช้อัลกอริทึมการถ่ายโอนเดลต้าเท่านั้น
- การใช้แบนด์วิธน้อยลง: เนื่องจาก rsync ไม่จำเป็นต้องคัดลอกทั้งไฟล์อีกครั้ง จึงทำให้ใช้แบนด์วิธน้อยลง นอกจากนี้ยังใช้อัลกอริธึมการบีบอัด/คลายการบีบอัดเพื่อลดขนาดไฟล์ระหว่างการถ่ายโอน
- ตัวเลือกบรรทัดคำสั่งเพิ่มเติม: rsync ยังชนะ scp ในจำนวนตัวเลือกบรรทัดคำสั่ง ซึ่งหมายความว่าคุณสามารถปรับแต่ง rsync ได้มากกว่า scp
สรุปได้ว่า rsync เป็นเครื่องมือซิงค์ส่วนเพิ่มที่ยอดเยี่ยม เครื่องมือ scp ยังมีประโยชน์สำหรับการถ่ายโอน/ซิงค์ไฟล์อย่างปลอดภัย ในสถานการณ์จริง scp เหมาะสำหรับงานประจำวัน หากคุณกำลังมองหาวิธีการที่ตรงไปตรงมามากขึ้น อย่างไรก็ตาม สำหรับงานที่เกิดซ้ำ ให้ใช้ rsync
ไวยากรณ์คำสั่ง rsync
คำสั่ง rsync มีดังต่อไปนี้:
ที่นี่ เงื่อนไขที่กำหนดไว้ด้านล่าง:
- ตัวเลือก – นี่คือตัวเลือก rsync
- แหล่งที่มา – ไดเร็กทอรีต้นทาง
- DEST – ไดเร็กทอรีปลายทาง
- USER – ชื่อผู้ใช้ระยะไกล
- HOST – ชื่อโฮสต์ระยะไกลหรือที่อยู่ IP
อ็อพชันคือพารามิเตอร์ที่มีฟังก์ชันเพิ่มเติมสำหรับคำสั่ง ตัวอย่างเช่น คุณสามารถซิงค์ข้อมูลแบบเรียกซ้ำด้วยตัวเลือก -r อย่างไรก็ตาม ตัวเลือก -r จะไม่ซิงค์ความเป็นเจ้าของสำหรับกลุ่มและผู้ใช้ การประทับเวลา การอนุญาต หรือลิงก์สัญลักษณ์ คุณสามารถใช้ตัวเลือก -a ซึ่งรันคำสั่งในโหมดเก็บถาวรแทน เพื่อให้แน่ใจว่าความเป็นเจ้าของไฟล์ การอนุญาต และลิงก์สัญลักษณ์ทั้งหมดจะถูกเก็บไว้เมื่อคัดลอก
ตัวเลือก rsync อื่นๆ ได้แก่:
- -z: บีบอัดข้อมูลเพื่อประหยัดพื้นที่
- -h: ให้เอาต์พุตรูปแบบที่มนุษย์อ่านได้
- -b: ทำการสำรองข้อมูลระหว่างกระบวนการซิงโครไนซ์ข้อมูล
- -e: ใช้โปรโตคอล SSH สำหรับการถ่ายโอนข้อมูลระยะไกล
- -progress: แสดงความคืบหน้าการซิงโครไนซ์ข้อมูล
- -v: ขอให้ rsync แสดงเอาต์พุตอย่างละเอียด
- –n: ดำเนินการทดสอบแบบแห้งเพื่อทดสอบการตั้งค่าและการตั้งค่าสำหรับการซิงโครไนซ์ข้อมูล
- -q: ระงับเอาต์พุตคำสั่ง rsync และอ็อพชัน
กำลังติดตั้ง rsync
ระบบ Unix และ Linux ส่วนใหญ่ติดตั้ง rsync ไว้แล้ว หากระบบของคุณไม่มี rsync คุณสามารถติดตั้งได้โดยใช้คำสั่งต่อไปนี้
สำหรับ Debian/Ubuntu และ Mint
sudo apt-get install rsync
สำหรับอาร์คลินุกซ์
pacman -S rsync
บน Gentoo
emerge sys-apps/rsync
บน CentOS/Fedora/REHL
sudo yum install rsync
บน openSUSE
sudo zypper install rsync
เนื่องจากเรามี Linux Mint จึงมีการติดตั้ง rsync ไว้ล่วงหน้า ดังนั้นคุณสามารถเรียกใช้คำสั่ง rsync ในเทอร์มินัลเพื่อดูว่ามีการติดตั้งหรือไม่ โดยจะอธิบายถึงความสามารถ ตัวเลือก และข้อมูลสำคัญอื่นๆ หากมี
nitt ~ $ rsync rsync version 3.2.3 protocol version 31 Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others. Web site: https://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes, batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv, symtimes, prealloc, stop-at, no crtimes Optimizations: SIMD, no asm, openssl-crypto Checksum list: xxh128 xxh3 xxh64 (xxhash) md5 md4 none Compress list: zstd lz4 zlibx zlib none rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details. rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm.
มาดูการทำงานของ rsync กับกรณีการใช้งานต่างๆ กัน
สำหรับบทช่วยสอน เราจะสร้างไดเร็กทอรีสองไดเร็กทอรี
- ไดเร็กทอรีแหล่งที่มา
- ไดเรกทอรีปลายทาง
คุณต้องพิมพ์คำสั่งต่อไปนี้
mkdir source-directory mkdir dest-directory
นอกจากนี้ เราจะต้องสร้างไฟล์เพื่อให้ rsync ทำงานได้ ลองสร้างไฟล์ทดสอบด้วยคำสั่งด้านล่าง
touch source-directory/file{1..100}
สิ่งนี้สร้างไฟล์ว่าง 100 ไฟล์ในไดเร็กทอรีต้นทาง คุณสามารถยืนยันได้โดยป้อนคำสั่งด้านล่าง
ls source-directory Output: nitt rsync-tutorial $ ls dest-directory source-directory nitt rsync-tutorial $ touch source-directory/file{1..100} nitt rsync-tutorial $ ls source-directory file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
หมายเหตุ: เราได้ทำให้ไดเร็กทอรีปลายทางว่างเปล่า
คัดลอกไดเรกทอรีในเครื่องแบบเรียกซ้ำ
แม้ว่า rsync มีเป้าหมายหลักเพื่อคัดลอกไฟล์ระหว่างเซิร์ฟเวอร์ภายในเครื่องและระยะไกล แต่ก็มีประโยชน์เท่าเทียมกันสำหรับการคัดลอกไฟล์ภายในเครื่อง
ในกรณีนี้ เราจะใช้ไวยากรณ์ rsync ต่อไปนี้
ตัวเลือก rsync ปลายทางแหล่งที่มา
คัดลอกไฟล์ในไดเร็กทอรีต้นทางไปยังไดเร็กทอรีปลายทางโดยใช้คำสั่งต่อไปนี้
rsync -r source-directory/ dest-directory
ที่นี่ คำสั่ง “เรียกซ้ำ” คัดลอกไฟล์จากไดเร็กทอรีต้นทางไปยังไดเร็กทอรีปลายทาง
nitt rsync-tutorial $ ls dest-directory source-directory nitt rsync-tutorial $ ls dest-directory nitt rsync-tutorial $ ls source-directory file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99 nitt rsync-tutorial $ rsync -r source-directory/ dest-directory nitt rsync-tutorial $ ls dest-directory file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
สิ่งนี้จะคัดลอกทุกไฟล์ในไดเร็กทอรีต้นทางไปยังไดเร็กทอรีปลายทาง
คัดลอกไฟล์เดียวในเครื่อง
ตอนนี้เราได้เรียนรู้วิธีซิงค์สองไดเร็กทอรีแล้ว เราจะเรียนรู้วิธีคัดลอกไฟล์เดียว
เพื่อจุดประสงค์นี้ เราจะแก้ไขไฟล์เปล่า file1 ในไดเร็กทอรีต้นทาง จากนั้นซิงค์กับไฟล์เดียวกันที่อยู่ในไดเร็กทอรีปลายทาง
หากต้องการแก้ไขไฟล์ ให้พิมพ์คำสั่งต่อไปนี้
nano source-directory/file1
ตอนนี้คัดลอกและวางข้อความต่อไปนี้ลงในตัวแก้ไขนาโน
We're updating file1 in the source-directory. Once we update, we'll push the new update to the dest-directory. rsync doesn't need to re-copy the file using the delta-transfer algorithm. This algorithm checks the differences and then updates destination files accordingly. So, once you save file1 in the source-directory, open file1 in the dest-directory. It'll be empty. However, if we check it after running rsync, you'll see that file1 in dest-directory is updated.
การเพิ่มเนื้อหาลงในไฟล์
ตอนนี้ ปิดและบันทึกไฟล์
ตอนนี้เรามาคัดลอกไฟล์โดยใช้ rsync
sudo rsync -v --existing source-directory/file1 /dest-directory
#Output nitt rsync-tutorial $ sudo rsync -v --existing source-directory/file1 dest-directory file1 sent 557 bytes received 35 bytes 1,184.00 bytes/sec total size is 474 speedup is 0.80 nitt rsync-tutorial $
ดังที่คุณอาจสังเกตเห็น เราใช้ตัวเลือกที่มีอยู่ สิ่งนี้จะอัปเดตไฟล์ที่มีอยู่ หากคุณรันคำสั่งโดยไม่มี –existing คำสั่งนั้นจะไม่อัพเดต แม้ว่าจะรันสำเร็จก็ตาม
หากไม่มีไฟล์เดียวที่คุณกำลังคัดลอกในโฟลเดอร์ปลายทาง คุณต้องเรียกใช้คำสั่งต่อไปนี้
rsync -v source-directory/newfile dest-directory
#Output nitt rsync-tutorial $ rsync -v source-directory/newfile dest-directory newfile sent 82 bytes received 35 bytes 234.00 bytes/sec total size is 0 speedup is 0.00
การคัดลอกหลายไฟล์
หากคุณต้องการคัดลอกหลายไฟล์ คุณต้องระบุพาธต้นทางของทั้งสองไฟล์ ตามด้วยไดเร็กทอรีเป้าหมาย
เพื่อจุดประสงค์นี้ เราจะสร้างไฟล์ใหม่สองไฟล์: newfile2 และ newfile3 ในไดเร็กทอรีต้นทาง เรียกใช้คำสั่งต่อไปนี้เพื่อดำเนินการดังกล่าว
touch source-directory/newfile{2..3}
ตอนนี้ ใช้คำสั่งต่อไปนี้เพื่อซิงค์หลายไฟล์
rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output nitt rsync-tutorial $ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory newfile2 newfile3 sent 135 bytes received 54 bytes 378.00 bytes/sec total size is 0 speedup is 0.00 nitt rsync-tutorial $
คัดลอกไฟล์หรือไดเร็กทอรีจากโลคัลไปยังรีโมต
ไวยากรณ์ rsync สำหรับการถ่ายโอนแบบโลคัลไปยังรีโมตมีดังนี้
rsync option SOURCE [email protected]:DEST
อย่างที่คุณเห็น คุณจำเป็นต้องทราบที่อยู่ IP ของเครื่องระยะไกลเพื่อให้สามารถใช้งานได้ นอกจากนี้ คุณต้องเพิ่มที่อยู่ IP หลังไฟล์ต้นฉบับ
rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
ก่อนเริ่มการโอน ระบบจะถามรหัสผ่าน ป้อนเพื่อดำเนินการต่อ นอกจากนี้ หากผู้ใช้เป็นคนละคนกันในเครื่องระยะไกล คุณต้องระบุก่อนที่อยู่ IP ตามด้วย @
rsync -av /Projects/rsync-tutorial/source-directory [email protected]: /Projects/rsync-tutorial/dest-directory
หากคุณต้องการคัดลอกไฟล์หรือไดเร็กทอรีหลายไฟล์ คุณต้องระบุไฟล์หรือพาธไดเร็กทอรี ไวยากรณ์สำหรับมันอยู่ด้านล่าง
rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory
โปรโตคอลเฉพาะการถ่ายโอนระยะไกล
rsync ให้คุณระบุโปรโตคอลการถ่ายโอนไฟล์เฉพาะ ในการทำเช่นนั้น คุณต้องใช้ตัวเลือก -e ตามด้วยโปรโตคอล
ตัวอย่างเช่น หากคุณต้องการใช้โปรโตคอล ssh คุณต้องเพิ่ม -e ssh ต่อท้ายคำสั่ง rsync
rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
การคัดลอกไฟล์หรือไดเรกทอรีจากระยะไกลไปยังเครื่อง
ไวยากรณ์ rsync สำหรับการถ่ายโอนแบบโลคัลไปยังรีโมตมีดังนี้
sync option [email protected]:SRC DEST
สิ่งนี้ทำหน้าที่เป็นคำขอดึง ดังนั้น ในการรับไฟล์/ไดเร็กทอรีที่ต้องการจากเซิร์ฟเวอร์ระยะไกลไปยังเครื่องโลคัลของคุณ คุณต้องเรียกใช้คำสั่งต่อไปนี้
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
คำสั่งดึงไฟล์ภายในไดเร็กทอรีปลายทางของเครื่องรีโมตไปยังไดเร็กทอรีต้นทางของเครื่องโลคัล
ในทำนองเดียวกัน คุณสามารถดึงไฟล์เฉพาะเจาะจงได้โดยกล่าวถึงไฟล์นั้นผ่านเส้นทางแบบเต็ม
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory
ในการคัดลอกไฟล์หรือไดเร็กทอรีหลายไฟล์จากโลคัลไปยังรีโมต คุณต้องระบุพาธภายในวงเล็บปีกกา (คั่นด้วยเครื่องหมายจุลภาค) หลังที่อยู่ IP ของเซิร์ฟเวอร์
rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory
คุณสามารถพูดถึงไฟล์ได้เช่นกัน
แสดงความคืบหน้าสดระหว่างการถ่ายโอน
เป็นความคิดที่ดีที่จะดูความคืบหน้าของการสำรองข้อมูลขนาดใหญ่ คุณต้องใช้แฟล็ก –progress ต่อท้ายคำสั่ง rsync แล้วคุณจะเห็นความเร็วการถ่ายโอน เวลาที่เหลือ และจำนวนข้อมูลที่ถ่ายโอน
rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
ลบไฟล์ต้นฉบับเมื่อการถ่ายโอนเสร็จสิ้น
คุณสามารถใช้แฟล็ก -remove-source-files เพื่อลบไฟล์ต้นฉบับหลังจากการถ่ายโอนเสร็จสมบูรณ์ สิ่งนี้สามารถช่วยคุณได้ในหลาย ๆ สถานการณ์ โดยเฉพาะอย่างยิ่งเมื่อต้องรักษาความปลอดภัยไฟล์ของคุณโดยไม่ทิ้งร่องรอยใด ๆ หรือเพียงแค่ใช้เพื่อเพิ่มพื้นที่ว่าง
rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
rsync ดรายรัน
Rysnc ยังให้คุณประเมินก่อนที่จะรันจริง การทดสอบแบบแห้งช่วยให้คุณเห็นว่าคุณกำลังทำสิ่งที่ถูกต้องหรือไม่ ท้ายที่สุด คุณไม่ต้องการอัปเดตไฟล์โดยไม่ได้ตั้งใจหรือแม้แต่ลบออก
คุณต้องใช้ตัวเลือก –dry-run เพื่อดำเนินการแบบแห้ง เพิ่มลงในคำสั่ง ตามด้วยต้นทางและปลายทาง
sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial $ sudo rsync -v --dry-run source-directory/file1 dest-directory file1 sent 43 bytes received 19 bytes 124.00 bytes/sec total size is 474 speedup is 7.65 (DRY RUN) nitt rsync-tutorial
ผลลัพธ์จะคล้ายกับที่เราเรียกใช้ก่อนหน้านี้ อย่างไรก็ตาม คุณจะสังเกตเห็นการกล่าวถึง (DRY RUN) ที่ส่วนท้ายของเอาต์พุต
กำหนดขนาดไฟล์ขั้นต่ำและสูงสุด
Rysnc ยังให้คุณกำหนดขนาดไฟล์ขั้นต่ำหรือสูงสุดระหว่างการถ่ายโอน
ดังนั้น หากคุณต้องการถ่ายโอนด้วยขนาดขั้นต่ำ 15KB คุณต้องใช้ –min-size=15K
rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
คำสั่งจะคัดลอกไฟล์ที่มีขนาดไฟล์ขั้นต่ำ 15KB เท่านั้น หากขนาดไฟล์ต่ำกว่า ระบบจะไม่สนใจ
ในทำนองเดียวกัน คุณสามารถใช้แฟล็ก –max-size เพื่อตั้งค่าขนาดไฟล์สูงสุด
rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
ที่นี่ rsync จะละเว้นไฟล์ที่มีขนาดเกิน 450K
ตั้งค่าขีดจำกัดแบนด์วิธ
หากคุณกำลังทำงานอื่นๆ ที่ต้องใช้แบนด์วิธสูง คุณสามารถตั้งค่า rysnc เพื่อตั้งค่าขีดจำกัดแบนด์วิธสำหรับการถ่ายโอน ในการทำเช่นนั้น ให้ใช้ –bwlimit=KB/s
rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
ที่นี่ เราตั้งค่าแบนด์วิธเป็น 100Kb/s ระหว่างการถ่ายโอน
คำสุดท้าย
สิ่งนี้นำเราไปสู่จุดสิ้นสุดของคู่มือคำสั่ง rsync เราได้เรียนรู้วิธีใช้ rysnc และครอบคลุมคำสั่งมากมายอย่างมีประสิทธิภาพ
อย่างไรก็ตาม rysnc ให้มากกว่าที่เรากล่าวถึง นั่นเป็นเหตุผลที่คุณอาจต้องการดูหน้า rsync man ซึ่งครอบคลุมทุกแง่มุมของ rsync
ถัดไป ตรวจสอบเอกสารสรุปบรรทัดคำสั่งสำหรับ Windows, Linux และ macOS