ป้องกัน rsync จากการลบไฟล์ต้นฉบับที่ยังไม่เสร็จ


169

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

$ rsync --remove-source-files speed:/var/crawldir .

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

คำตอบ:


10

ดูเหมือนว่าฉันมีปัญหาในการถ่ายโอนไฟล์ก่อนที่จะเสร็จสมบูรณ์ไม่ใช่ว่าคุณกำลังลบไฟล์

หากนี่คือ Linux อาจเป็นไปได้ว่าไฟล์ที่จะเปิดโดยกระบวนการ A และกระบวนการ B สามารถยกเลิกการเชื่อมโยงไฟล์ได้ ไม่มีข้อผิดพลาด แต่แน่นอนว่า A เสียเวลาไปแล้ว ดังนั้นความจริงที่ว่า rsync ลบไฟล์ต้นฉบับไม่ได้เป็นปัญหา

ปัญหาคือ rsync จะลบไฟล์ต้นฉบับหลังจากที่มันถูกคัดลอกและถ้ามันยังถูกเขียนไปยังดิสก์คุณจะมีไฟล์บางส่วน

วิธีการเกี่ยวกับเรื่องนี้: เมาmassเป็นระบบไฟล์ระยะไกล (NFS จะทำงาน) speedใน จากนั้นเพียงรวบรวมข้อมูลจากเว็บโดยตรง


9

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


3

Rsync สามารถยกเว้นไฟล์ที่ตรงกับ patters บางอย่าง แม้ว่าคุณจะไม่สามารถแก้ไขได้เพื่อให้ดาวน์โหลดไฟล์ไปยังไดเรกตอรีชั่วคราวบางทีอาจมีการตั้งชื่อไฟล์ต่างกันในระหว่างการดาวน์โหลด (เช่น: foo.downloadingขณะดาวน์โหลดไฟล์ที่มีชื่อfoo) และคุณสามารถใช้คุณสมบัตินี้เพื่อแยกไฟล์ ซึ่งยังคงถูกดาวน์โหลดจากการคัดลอก


3

หากคุณสามารถควบคุมกระบวนการรวบรวมข้อมูลหรือมีผลลัพธ์ที่คาดการณ์ได้โซลูชันข้างต้น (เก็บไว้ใน tempfile จนกว่าจะเสร็จสิ้นจากนั้น mv'ing ไปยังตำแหน่งที่ดาวน์โหลดเสร็จสมบูรณ์หรือละเว้นไฟล์ด้วยชื่อ '.downloading') อาจทำงานได้ หากทั้งหมดนั้นอยู่เหนือการควบคุมของคุณคุณสามารถตรวจสอบให้แน่ใจว่าไฟล์นั้นไม่ได้ถูกเปิดโดยกระบวนการใด ๆ โดยทำ 'lsof $ filename' และตรวจสอบว่ามีผลลัพธ์หรือไม่ เห็นได้ชัดว่าไม่มีใครเปิดไฟล์มันปลอดภัยที่จะย้ายมัน

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