การใช้คำสั่ง rsync เพื่อซิงค์ไฟล์และไดเร็กทอรี [11 Examples]

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 กับกรณีการใช้งานต่างๆ กัน

  การติดตั้ง Apache 2.4.6 บน Unix

สำหรับบทช่วยสอน เราจะสร้างไดเร็กทอรีสองไดเร็กทอรี

  • ไดเร็กทอรีแหล่งที่มา
  • ไดเรกทอรีปลายทาง

คุณต้องพิมพ์คำสั่งต่อไปนี้

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

สิ่งนี้จะคัดลอกทุกไฟล์ในไดเร็กทอรีต้นทางไปยังไดเร็กทอรีปลายทาง

  วิธีหยุดหน้าจอ iPhone ของคุณไม่ให้ปิด

คัดลอกไฟล์เดียวในเครื่อง

ตอนนี้เราได้เรียนรู้วิธีซิงค์สองไดเร็กทอรีแล้ว เราจะเรียนรู้วิธีคัดลอกไฟล์เดียว

เพื่อจุดประสงค์นี้ เราจะแก้ไขไฟล์เปล่า 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 ตามด้วยโปรโตคอล

  10 รหัสผ่านที่พบบ่อยที่สุดที่คุณควรหยุดใช้

ตัวอย่างเช่น หากคุณต้องการใช้โปรโตคอล 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

เรื่องล่าสุด

x