à¹à¸§à¸à¹à¸²à¸à¸±à¸ à¸à¸à¸±à¸à¸à¸´à¹à¸¨à¸©
สารบัญ:
- ก่อนที่คุณจะเริ่ม
- ยกเว้นไฟล์เฉพาะ
- ยกเว้นไดเรกทอรีเฉพาะ
- ยกเว้นไฟล์หรือไดเรกทอรีหลายรายการ
- ยกเว้นไฟล์หรือไดเรกทอรีหลายรายการโดยยึดตามรูปแบบ
- ข้อสรุป
Rsync เป็นยูทิลิตี้บรรทัดคำสั่งที่รวดเร็วและหลากหลายที่ซิงโครไนซ์ไฟล์และโฟลเดอร์ระหว่างสองตำแหน่งผ่านเชลล์ระยะไกล
ด้วย Rsync คุณสามารถทำมิเรอร์ข้อมูลสร้างการสำรองข้อมูลเพิ่มเติมและคัดลอกไฟล์ระหว่างระบบ เมื่อคัดลอกข้อมูลคุณอาจต้องการแยกไฟล์หรือไดเรกทอรีอย่างน้อยหนึ่งไฟล์ตามชื่อหรือที่ตั้ง
ในบทช่วยสอนนี้เราจะแสดงวิธีแยกไฟล์และไดเรกทอรีด้วย rsync
ก่อนที่คุณจะเริ่ม
คุณควรมีความรู้พื้นฐานว่า rsync ทำงานอย่างไร
ในตัวอย่างด้านล่างเราจะใช้ rsync กับตัวเลือก
-a
สิ่งนี้จะบอก rsync ให้ซิงค์ไดเรกทอรีซ้ำถ่ายโอนอุปกรณ์พิเศษและบล็อกและรักษาลิงก์สัญลักษณ์เวลาแก้ไขกลุ่มความเป็นเจ้าของและสิทธิ์
เมื่อไม่รวมไฟล์หรือไดเรกทอรีคุณต้องใช้พา ธ สัมพัทธ์กับไดเรกทอรีต้นทาง
มีสองตัวเลือกในการระบุไฟล์และไดเรกทอรีที่คุณต้องการยกเว้น:
- จาก บรรทัดคำสั่ง ใช้ตัวเลือก
--exclude
จาก ไฟล์ โดยใช้ตัวเลือก--exclude-from
ยกเว้นไฟล์เฉพาะ
หากต้องการยกเว้นไฟล์เฉพาะให้ส่งพา ธ สัมพัทธ์ไปยังไฟล์ไปที่ตัวเลือก
--exclude
ในตัวอย่างต่อไปนี้ไฟล์
src_directory/file.txt
จะไม่ถูกถ่ายโอน:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/
ยกเว้นไดเรกทอรีเฉพาะ
การยกเว้นไดเรกทอรีเฉพาะนั้นเหมือนกับการแยกไฟล์เพียงแค่ผ่านเส้นทางสัมพัทธ์ไปยังไดเรกทอรีไปยังตัวเลือก
--exclude
ดังที่แสดงด้านล่าง:
rsync -a --exclude 'dir1' src_directory/ dst_directory/
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/
ยกเว้นไฟล์หรือไดเรกทอรีหลายรายการ
หากต้องการยกเว้นหลายไฟล์หรือไดเรกทอรีเพียงระบุตัวเลือก
--exclude
หลายตัว:
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/
rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/
หากจำนวนไฟล์และ / หรือไดเรกทอรีที่คุณต้องการแยกมีขนาดใหญ่แทนที่จะใช้ตัวเลือก
--exclude
หลายตัวคุณสามารถระบุไฟล์และไดเรกทอรีที่คุณต้องการยกเว้นในไฟล์และส่งไฟล์ไปยัง
--exclude-from
ตัวเลือก
คำสั่งด้านล่างทำเหมือนกับที่กล่าวมาข้างต้น:
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
ยกเว้น-file.txt
ยกเว้นไฟล์หรือไดเรกทอรีหลายรายการโดยยึดตามรูปแบบ
ด้วย rsync คุณยังสามารถแยกไฟล์และไดเรกทอรีตามรูปแบบที่ตรงกับไฟล์หรือชื่อไดเรกทอรี
ตัวอย่างเช่นหากต้องการยกเว้นไฟล์
.jpg
ทั้งหมดที่คุณจะรัน:
rsync -a --exclude '*.jpg*' src_directory/ dst_directory/
เป็นการยากที่จะแยกไฟล์และไดเรกทอรีอื่นทั้งหมดออกยกเว้นไฟล์ที่ตรงกับรูปแบบที่กำหนด สมมติว่าคุณต้องการยกเว้นไฟล์และไดเรกทอรีอื่นทั้งหมดยกเว้นไฟล์ที่ลงท้ายด้วย
.jpg
ทางเลือกหนึ่งคือใช้คำสั่งต่อไปนี้:
rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/
เมื่อใช้ตัวเลือกการรวม / แยกหลายกฎการจับคู่แรกจะมีผล
-
--include='*.jpg'
- อันดับแรกเราจะรวมไฟล์.jpg
ทั้งหมด--include='*/'
- จากนั้นเราจะรวมไดเรกทอรีทั้งหมดที่อยู่ในไดเรกทอรีในsrc_directory
หากไม่มี rsync นี้จะคัดลอกไฟล์*.jpg
ในไดเรกทอรีระดับบนสุดเท่านั้น-m
- ลบไดเรกทอรีที่ว่างเปล่า
ตัวเลือกอื่นจะไปป์เอาท์พุทของคำสั่ง find เพื่อ rsync:
find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/
-
-printf %P\\0\\n
- จะลบsrc_directory/
ออกจากเส้นทางของไฟล์--files-from=-
- หมายถึงรวมเฉพาะไฟล์จากอินพุตมาตรฐาน (ไฟล์ที่ส่งจากคำสั่ง find)
ข้อสรุป
ในบทช่วยสอนนี้คุณเรียนรู้วิธีแยกไฟล์และไดเรกทอรีเมื่อถ่ายโอนข้อมูลด้วย Rsync มีอีกมากมายที่จะเรียนรู้เกี่ยวกับ Rsync ได้ที่หน้าคู่มือผู้ใช้ของ Rsync
วิธีการถ่ายโอนไฟล์ด้วย rsync ผ่าน ssh

ด้วย rsync คุณสามารถถ่ายโอนไฟล์และไดเรกทอรีผ่าน SSH จากและไปยังเซิร์ฟเวอร์ระยะไกล ในบทช่วยสอนนี้เราจะอธิบายวิธีคัดลอกไฟล์ด้วย rsync ผ่าน SSH
วิธีใช้ rsync สำหรับการถ่ายโอนและการซิงโครไนซ์ข้อมูลภายในและระยะไกล

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