ทำไมพื้นที่ว่างในพาร์ติชันต้นฉบับไม่เปลี่ยนแปลงในช่วง“ mv”


13

ฉันกำลังmvจะย้ายไดเรกทอรี (ซึ่งมีไฟล์จำนวนมาก) จากพาร์ทิชันหนึ่งไปยังอีก ในขณะที่mvกำลังย้ายไฟล์แต่ละไฟล์ในไดเรกทอรีทีละหนึ่งฉันสังเกตว่าขนาดพื้นที่ว่างของพาร์ติชันต้นทางไม่เปลี่ยนแปลงในขณะที่ขนาดพื้นที่ว่างของพาร์ติชันปลายทางลดลง

ทำไมจึงเป็นเช่นนั้นแทนที่จะเป็นผลรวมของขนาดพื้นที่ว่างของพาร์ติชันต้นทางและปลายทางยังคงเหมือนเดิม

คำตอบ:


16

ตามที่ POSIX กำหนดไว้mvจะทำซ้ำไฟล์ต้นฉบับไปยังเส้นทางปลายทางและหากไม่มีสิ่งใดผิดพลาดไฟล์ต้นฉบับจะถูกลบ:

  1. ลำดับชั้นของไฟล์ที่รูทใน source_file จะต้องทำซ้ำเป็นลำดับชั้นของไฟล์ที่รูทในพา ธ ปลายทาง

  2. ลำดับชั้นของไฟล์ที่รูทใน source_file จะถูกลบออก หากสิ่งนี้ล้มเหลวด้วยเหตุผลใดก็ตาม mv จะเขียนข้อความวินิจฉัยไปยังข้อผิดพลาดมาตรฐานไม่ต้องทำอะไรมากกับ source_file ปัจจุบันและไปยัง source_files ใด ๆ ที่เหลืออยู่

หากคุณย้ายระบบไฟล์เดียวกันคุณจะย้ายรายการจากที่เดียวในระบบไฟล์ไปยังที่อื่น

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


16

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


แต่ dir มีไฟล์จำนวนมาก
ทิม

7
@Tim: มันไม่ได้เริ่มลบไฟล์ต้นฉบับจนกว่าไฟล์ทั้งหมดจะถูกทำซ้ำในปริมาณปลายทาง หากคุณต้องการย้ายไฟล์ทีละไฟล์เพื่อที่จะได้ไม่ต้องใช้พื้นที่ "พิเศษ" มากกว่าไฟล์ที่ใหญ่ที่สุดคุณจะต้องสร้างลูปเพื่อทำสิ่งนี้
Warren Young

4
คุณเคยทำสิ่งที่เคลื่อนไหวใน MS-Windows และประมาณครึ่งทางผ่านสิ่งที่ผิดพลาด ทั้งแหล่งที่มาและปลายทางนั้นไม่เป็นระเบียบและคุณเหลือที่จะแก้ไข หากคุณไม่ใช่คนที่กล้าหาญคุณอาจจะลบทั้งคู่และเรียนรู้ที่จะไม่ทำอีกครั้ง
ctrl-alt-delor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.