mv ทำอะไรในกรณีที่เกิดข้อผิดพลาด?


18

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

คำสั่งนั้นเรียบง่ายmv source-dir destination-dirโดยที่ dirs ทั้งสองอยู่ในดิสก์ที่แตกต่างกัน mv (GNU coreutils) 7.4ฉันใช้ ฉันพบคำตอบของคำถามต่อไปนี้ในหน้าคนใด:

  • สร้างไฟล์ที่ถูกตัดทอน
  • ในกรณีที่มีข้อผิดพลาดจะมีการลบอะไรในแผนผังต้นไม้
  • วิธีการกู้คืน (ในวิธีที่ง่ายและรวดเร็ว)?

คำตอบ:


8

ฉันคิดว่าบทนำของinfoหน้าตอบคำถามของคุณทั้งหมด:

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

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

แก้ไข: ฉันทำการทดสอบด้วยไฟล์ขนาดใหญ่ (ไม่กี่ G) ที่สร้างด้วยddแต่ไม่มีผลสรุป ไม่เคยจัดการเพื่อคัดลอกแหล่งที่มาเพียงไม่กี่ - ฉันยกเลิกการดำเนินการทั้งหมด (เร็วเกินไป) หรือหลังจากนั้นไม่ได้รับโอกาสใด ๆ เนื่องจากการแคชดิสก์และการออกแบบระบบไฟล์ที่ดี (^ C ของฉันลงจอดเสมอหลังจากการย้ายสำเร็จ )


1
เกี่ยวกับหน้าข้อมูลฉันเข้าใจถูกต้องหรือไม่ว่าสำหรับไดเรกทอรีแหล่งบรรทัดคำสั่งแต่ละรายการมันจะถูกลบออกหากการคัดลอกที่เกี่ยวข้องประสบความสำเร็จหรือไม่ ฉันหมายความว่าmv src1 src2 dstงานในแง่นี้คล้ายกับmv src1 dst; mv src2 dstและแต่ละคนmv src dstเป็นcp -a src dst && rm -rf srcอย่างไร
maaartinus

1
นั่นคือสิ่งที่ฉันเข้าใจเช่นกัน (แค่ mv ของคุณก็คือ mv && mv) เนื่องจากcp -aมีการเรียกซ้ำแล้วฉันสงสัยว่าจะใช้กับแต่ละไฟล์และไดเรกทอรีที่พบในขณะที่สำรวจต้นไม้ จะทำการทดสอบในภายหลัง
lynxlynxlynx

12

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

การกู้คืนข้อมูลปลายทางเท่านั้นควรเสียหาย แทนที่จะใช้ mv เป็นอีกครั้งให้ใช้ rsync แล้ว rm ด้วยตนเอง

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