วิธีใช้ rsync เพื่อคัดลอกไฟล์

How Use Rsync Copy Files



Rsync เป็นเครื่องมือบรรทัดคำสั่งใน Linux ที่ใช้ในการคัดลอกไฟล์จากตำแหน่งต้นทางไปยังตำแหน่งปลายทาง คุณสามารถคัดลอกไฟล์ ไดเร็กทอรี และระบบไฟล์ทั้งหมด และซิงค์ไฟล์ระหว่างไดเร็กทอรีต่างๆ มันทำมากกว่าแค่การคัดลอกไฟล์ ช่วยลดปริมาณข้อมูลที่ส่งผ่านเครือข่ายโดยส่งเฉพาะไฟล์ที่ใหม่หรืออัปเดตเท่านั้น นั่นเป็นเหตุผลที่ถือว่าเป็นยูทิลิตี้ที่ยอดเยี่ยมสำหรับการคัดลอกและสำรองไฟล์ Rsync ยังรองรับการคัดลอกไฟล์ไปยังระบบระยะไกลผ่าน SSH

ในบทความนี้ เราจะอธิบายวิธีใช้ rsync เพื่อคัดลอกไฟล์พร้อมตัวอย่างที่ใช้งานได้จริง เราจะอธิบายการใช้ rsync ในการคัดลอกไฟล์เดียว หลายไฟล์ และไดเร็กทอรีไปยังทั้งระบบภายในและระยะไกล เราจะกล่าวถึงวิธีการใช้ Rsync เพื่อ:







  • คัดลอกไฟล์/ไดเร็กทอรีภายในระบบโลคัล
  • คัดลอกไฟล์/ไดเร็กทอรีจากโลคัลไปยังระบบรีโมต
  • คัดลอกไฟล์/ไดเร็กทอรีจากระบบรีโมตไปยังโลคัล

เราได้อธิบายคำสั่งและขั้นตอนที่กล่าวถึงในบทความนี้บน Ubuntu 20.04 LTS คุณจะต้องใช้ Terminal บรรทัดคำสั่งสำหรับการคัดลอกไฟล์โดยใช้ rsync หากต้องการเปิดแอปพลิเคชัน Terminal ของบรรทัดคำสั่ง ให้ใช้แป้นพิมพ์ลัด Ctrl+Alt+T



การติดตั้ง Rsync

Rsync ติดตั้งมาล่วงหน้าใน Ubuntu 20.04 LTS อย่างไรก็ตาม หากถูกลบออกจากระบบโดยไม่ได้ตั้งใจ คุณสามารถติดตั้งได้ดังนี้:



$sudoฉลาดติดตั้งrsync

ต่อไปนี้คือตัวเลือกที่ใช้กันทั่วไปบางส่วนที่สามารถใช้กับ rsync ได้:





–a: โหมดเก็บถาวร
–v: แสดงรายละเอียดของขั้นตอนการคัดลอก
–p: แสดงแถบความคืบหน้า
–r: คัดลอกข้อมูลแบบเรียกซ้ำ
–z: บีบอัดข้อมูล
–q: ระงับเอาต์พุต

คัดลอกไฟล์และไดเร็กทอรีในเครื่อง

ไวยากรณ์ทั่วไปของ rsync คือ:



$rsync[ตัวเลือก] [แหล่งที่มา] [ปลายทาง]

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

หากคุณต้องการคัดลอกไฟล์จากที่หนึ่งไปยังอีกที่หนึ่งภายในระบบของคุณ คุณสามารถทำได้โดยพิมพ์ rsync ตามด้วยชื่อไฟล์ต้นทางและไดเร็กทอรีปลายทาง

ตัวอย่างเช่น ในการคัดลอกไฟล์เดียว file1.txt จากตำแหน่งปัจจุบันที่เป็นไดเร็กทอรีโฮมไปยังไดเร็กทอรี ~/Documents คำสั่งจะเป็น:

$rsync/บ้าน/เชื่อ/file1.txt/บ้าน/เชื่อ/เอกสาร

หมายเหตุ: แทนที่จะพิมพ์ /home/tin/file1.txt เรายังสามารถพิมพ์ file1 เนื่องจากเรากำลังทำงานในโฮมไดเร็กตอรี่ นอกจากนี้เรายังสามารถใช้ ~/Documents แทนการกล่าวถึงพาธแบบเต็มว่า /home/tin/Documents

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

หากคุณต้องการคัดลอกไฟล์หลายไฟล์พร้อมกันจากที่หนึ่งไปยังอีกที่หนึ่งภายในระบบของคุณ คุณสามารถทำได้โดยพิมพ์ rsync ตามด้วยชื่อไฟล์ต้นทางและไดเร็กทอรีปลายทาง

ตัวอย่างเช่น ในการคัดลอกไฟล์ file2.txt และ file3.txt จากไดเร็กทอรีโฮมไปยังไดเร็กทอรี ~/Documents คำสั่งจะเป็นดังนี้:

$rsync/บ้าน/เชื่อ/file2.txt/บ้าน/เชื่อ/file3.txt/บ้าน/เชื่อ/เอกสาร

ในการคัดลอกไฟล์ทั้งหมดที่มีนามสกุลเดียวกัน คุณสามารถใช้เครื่องหมายดอกจัน (*) แทนการระบุชื่อไฟล์ทีละไฟล์ ตัวอย่างเช่น ในการคัดลอกไฟล์ทั้งหมดจากไดเร็กทอรีโฮมที่ลงท้ายด้วยนามสกุล .zip ไปยังไดเร็กทอรี ~/Documents เราจะใช้:

$rsync/บ้าน/เชื่อ/ *.zip ~/เอกสาร

คัดลอกไดเรกทอรีในเครื่อง

หากคุณต้องการคัดลอกไดเร็กทอรีที่มีไดเร็กทอรีย่อยและเนื้อหาทั้งหมดจากที่หนึ่งไปยังอีกที่หนึ่งภายในระบบของคุณ คุณสามารถทำได้โดยพิมพ์ rsync ตามด้วยไดเร็กทอรีต้นทางและปลายทาง

ตัวอย่างเช่น ในการคัดลอกไดเร็กทอรีตัวอย่างไปยังไดเร็กทอรี test/ ภายในไดเร็กทอรีโฮม คำสั่งจะเป็น:

$rsync-ของ /บ้าน/เชื่อ/ตัวอย่าง/บ้าน/เชื่อ/ทดสอบ

หมายเหตุ: การระบุ / หลังไดเร็กทอรีต้นทางจะคัดลอกเฉพาะเนื้อหาของไดเร็กทอรีเท่านั้น หากเราไม่ระบุ /after ไดเร็กทอรีต้นทาง ไดเร็กทอรีต้นทางจะถูกคัดลอกไปยังไดเร็กทอรีปลายทางด้วย

เช่นเดียวกับในผลลัพธ์ต่อไปนี้ คุณจะเห็นว่าตัวอย่างไดเร็กทอรีต้นทางของเราถูกคัดลอกไปยังไดเร็กทอรีปลายทางด้วย (เนื่องจากเราใช้ sample แทน sample/ เป็นไดเร็กทอรีต้นทาง)

Rsync รองรับการถ่ายโอนแบบเพิ่มหน่วยตามที่คุณเห็นในผลลัพธ์ด้านบนว่ามันจะโอนเฉพาะไฟล์ที่ใหม่หรืออัปเดตเท่านั้น

คัดลอกไฟล์ตามขนาดสูงสุด

ขณะคัดลอก เรายังสามารถระบุขนาดสูงสุดของไฟล์ที่สามารถคัดลอกได้ด้วยตัวเลือก –max-size ตัวอย่างเช่น ในการคัดลอกไฟล์ที่มีขนาดไม่เกิน 2000k จาก ~/Downloads ไปยัง ~/Documents คำสั่งจะเป็นดังนี้:

$rsync-ถึง --max-ขนาด=2000k/บ้าน/เชื่อ/ดาวน์โหลด/ * /บ้าน/เชื่อ/เอกสาร

คำสั่งนี้จะคัดลอกไฟล์ทั้งหมดจาก ~/Downloads ไปยัง ~/Documents ไดเร็กทอรี ยกเว้นไฟล์ที่มีขนาดใหญ่กว่า 2000k

คัดลอกไฟล์ตามขนาดขั้นต่ำ

ในทำนองเดียวกัน เรายังสามารถระบุขนาดขั้นต่ำของไฟล์ที่สามารถคัดลอกด้วยตัวเลือก –min-size ตัวอย่างเช่น ในการคัดลอกไฟล์ไม่น้อยกว่า 5M จาก ~/Downloads ไปยัง ~/Documents คำสั่งจะเป็นดังนี้:

$rsync-ถึง --min-ขนาด=5M/บ้าน/เชื่อ/ดาวน์โหลด/ /บ้าน/เชื่อ/เอกสาร

คำสั่งนี้จะคัดลอกไฟล์ทั้งหมดจาก ~/Downloads ไปยังไดเร็กทอรี ~/Documents ยกเว้นไฟล์ที่น้อยกว่า 5M

ไม่รวมไฟล์

ขณะคัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีหนึ่ง คุณสามารถยกเว้นไฟล์บางไฟล์ได้โดยใช้ตัวเลือก —exclude ตามด้วยชื่อไฟล์หรือนามสกุลของประเภทไฟล์

ตัวอย่างเช่น หากต้องการแยกไฟล์ .zip ทั้งหมดขณะคัดลอกไฟล์จาก ~/Downloads ไปยัง ~/Documents คำสั่งจะเป็นดังนี้:

$rsync-ถึง --ไม่รวม='*.zip' /บ้าน/เชื่อ/ดาวน์โหลด/ /บ้าน/เชื่อ/เอกสาร

คัดลอกไฟล์และไดเรกทอรีจากระยะไกล

ด้วย Rsync คุณสามารถคัดลอกไฟล์เดียว หลายไฟล์ และไดเร็กทอรีไปยังระบบระยะไกลได้ สำหรับการคัดลอกไฟล์และไดเร็กทอรีจากระยะไกล คุณจะต้อง:

  • Rsync ติดตั้งได้ทั้งบนระบบโลคัลและรีโมต
  • SSH เข้าถึงระบบระยะไกล
  • รหัสผ่านผู้ใช้ระยะไกล

ก่อนคัดลอกไฟล์โดยใช้ rsync ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงระบบระยะไกลผ่าน SSH:

$sshremote_user@รีโมท_ip


ไวยากรณ์ทั่วไปสำหรับการคัดลอกไฟล์และไดเร็กทอรีไปยังระบบรีโมตโดยใช้ rsync:

$rsync[ตัวเลือก] [แหล่งที่มา] [ผู้ใช้ระยะไกล@remoteip:ปลายทาง]

ตัวอย่างเช่น ในการคัดลอกไฟล์เดียว file.txt จาก ~/Downloads ไปยังไดเร็กทอรีระบบระยะไกล ~/Documents คำสั่งจะเป็น:

$rsync-v~/ดาวน์โหลด/file1.txt อุมารา@192.168.72.164:~/เอกสาร

ในทำนองเดียวกัน ในการคัดลอกไดเร็กทอรี ~/Downloads/files ในระบบโลคัลที่มีไดเร็กทอรีย่อยและเนื้อหาทั้งหมดไปยังไดเร็กทอรี ~/Downloads/samples ที่ระบบรีโมต:

$rsync-rv~/ดาวน์โหลด/ไฟล์ umra@192.168.72.164:~/ดาวน์โหลด/ตัวอย่าง

คุณยังสามารถคัดลอกไฟล์และไดเร็กทอรีจากเครื่องระยะไกลไปยังเครื่องของคุณได้อีกด้วย ตัวอย่างเช่น ในการคัดลอก file2.txt จากระบบรีโมตไปยังเดสก์ท็อประบบภายใน:

$rsync-vอุมารา@192.168.72.164:~/ดาวน์โหลด/file2.txt ~/เดสก์ทอป/

ในทำนองเดียวกัน การคัดลอกไดเร็กทอรีจากระบบรีโมตไปยังระบบโลคัล

$rsync-rvอุมารา@192.168.72.164:~/ดาวน์โหลด/ตัวอย่าง ~/เดสก์ทอป/ทดสอบ

คุณยังสามารถใช้ตัวเลือกทั้งหมด เช่น –max-size, –min-size, –exclude และอื่นๆ ในขณะที่คัดลอกไฟล์ไปยัง/จากระบบรีโมต

Rsync เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการคัดลอกไฟล์จากต้นทางไปยังปลายทางไม่ว่าจะในเครื่องหรือจากระยะไกล ประกอบด้วยชุดตัวเลือกมากมายที่ให้คุณมีความยืดหยุ่นและควบคุมได้ในขณะถ่ายโอนไฟล์ไปยัง/จากระบบระยะไกล