rsync - ลบไฟล์ต้นฉบับลบไฟล์ต้นฉบับทีละรายการหรือหลังจาก rsync เสร็จสมบูรณ์หรือไม่


23

ฉันมีคำสั่ง rsync ในแอปพลิเคชันที่คัดลอกเนื้อหาของโฟลเดอร์ไปยังเครื่องอื่น ฉันมีตัวเลือก--remove-source-filesเพราะฉันสนใจเพียงแค่ให้ไฟล์ในเครื่องปลายทางหลังจาก rsync เสร็จสิ้น

อย่างไรก็ตามฉันสงสัยว่า rsync จะทำงานอย่างไรถ้ามันขัดข้องหรือถูกขัดจังหวะขณะทำการถ่ายโอนไฟล์?

พิจารณาฉันมีสองไฟล์ไปยังซิงค์และa brsync จะคัดลอกaแล้วลบจากแหล่งที่มาและเริ่มการคัดลอกbหรือจะรอทั้งสองaและbจะถูกคัดลอกไปยังเครื่องปลายทางก่อนที่จะลบทั้งสอง ฉันเคยเห็นคุณสามารถกำหนดค่าพฤติกรรมนี้เมื่อลบไฟล์ที่ไม่เกี่ยวข้องด้วยการตั้งค่าสถานะบางอย่าง แต่ไม่พบเกี่ยวกับการลบไฟล์ต้นฉบับ


คล้ายกับstackoverflow.com/questions/7380234/ …แม้ว่าฉันคิดว่า Kyle อาจถูกต้อง - บางครั้งดูเหมือนว่า rsync จะรอไฟล์ทั้งหมดให้เสร็จสมบูรณ์ แต่บางครั้งก็ลบไฟล์ก่อนที่จะเสร็จสิ้น ยังคงสับสนอยู่เล็กน้อย
Chris2048

คำตอบ:


16

การตรวจสอบรหัส rsync แสดงให้เห็นว่าไฟล์ต้นฉบับจะถูกลบทิ้งในขณะที่ถูกส่งแม้ว่ามันจะไม่เกิดขึ้นทันที rsync ทวีคูณการดำเนินงานดังนั้นข้อความที่ได้รับไฟล์สำเร็จ (และสามารถลบได้) อาจถูกบัฟเฟอร์หลังข้อมูลอื่น ๆ


2
ตามคำตอบของฉันด้านล่างฉันลองด้วยไฟล์สองสามไฟล์และไฟล์จะถูกลบก็ต่อเมื่อการดำเนินการเสร็จสมบูรณ์ นั่นทำให้ฉันคิดว่าสัญญาณ "transfer OK" ที่คุณพบนั้นแทรกซึมเมื่อการดำเนินการเสร็จสมบูรณ์เท่านั้น
Daniel Andersson

5
หากคุณลองด้วยไฟล์มากกว่าสองสามไฟล์คุณจะเห็นไฟล์ต้นฉบับหายไปก่อนที่จะทำการถ่ายโอนทั้งหมด
Kyle Jones

ดูเหมือนว่าเมื่อระบุไดเรกทอรีและตัวเลือก recursive ไฟล์ในจะไม่ถูกลบทันที
อังเดร Holzner

4

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

แก้ไข:ตามคำตอบของ Kyle Jones กรณีอาจแตกต่างกันเมื่อมีไฟล์จำนวนมากที่เกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.