เมื่อเร็ว ๆ นี้ฉันต้องการลบไฟล์จำนวนมาก (มากกว่า 1 ล้านไฟล์) และฉันได้อ่าน:
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
rm -rf
เป็นหนึ่งในวิธีที่ดีที่สุดมากที่สุดที่จะทำเช่นนั้นและฉันสามารถรับรองว่ามันเร็วกว่า
ฉันไม่ใช่ผู้เชี่ยวชาญในเรื่องนี้ แต่จากความเข้าใจของฉันแล้วเหตุผลที่ประสิทธิภาพของ rsync มีบางอย่างที่ต้องทำตามวิธีที่รายการไฟล์ (LIFO แทนที่จะเป็น FIFO ที่ฉันคิดว่า) ตอนนี้ปัญหาคือฉันต้องย้ายไฟล์จำนวนมากด้วยวิธีที่มีประสิทธิภาพ หลังจากค้นหาแล้วฉันก็พบสิ่งนี้:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination
ขณะนี้ลบทั้งหมดย้ายไฟล์ใน~/source
ไดเรกทอรียังคงมี เนื่องจากฉันมีโครงสร้างไดเรกทอรีคล้ายกับ "round-robin" จำนวนfiles/directories
ใกล้เคียงกับ 1 ดังนั้นฉันจึงถูกบังคับให้เรียกใช้คำสั่งแรกอีกครั้งเพื่อกำจัดไดเรกทอรีทั้งหมด:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination && \
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
ตรงmv
จะเสร็จแทบทันที แต่~/destination
ไดเรกทอรีของฉันมีไฟล์ที่ควรเก็บไว้ดังนั้นจึงmv
ไม่ใช่ตัวเลือก ฉันพบตัวเลือก--prune-empty-dirs
และ--force
rsync แต่ดูเหมือนจะไม่ทำงานอย่างที่ฉันคาดหวัง:
--force force deletion of directories even if not empty
--prune-empty-dirs prune empty directory chains from the file-list
--remove-source-files sender removes synchronized files (non-dirs)
มีวิธีที่จะเลียนแบบการเคลื่อนไหวด้วย rsync ในครั้งเดียวหรือไม่?