Sau khi nhận được câu trả lời của Stephen Kitt và thảo luận về lệnh này như một giải pháp tiềm năng:
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Tôi quyết định không chạy nó cho đến khi tôi hiểu được những gì đang xảy ra, câu trả lời này mô tả những gì tôi phát hiện ra và cuối cùng làm.
Tôi đang sử dụng Gnu mv
sao chép tệp vào mục tiêu, sau đó chỉ khi thao tác sao chép thành công, nó sẽ xóa bản gốc.
Tuy nhiên, tôi muốn xác nhận xem có mv
thực hiện trình tự chuỗi này một lần hay không, nếu đó là sự thật, nội dung thư mục gốc sẽ được cắt thành hai phần, một phần được chuyển đến đích, phần còn lại vẫn bị bỏ lại tại nguồn. Và có thể sẽ có một tệp bị gián đoạn trong quá trình sao chép chung giữa hai thư mục - và nó có thể sẽ bị sai.
Để khám phá các tập tin phổ biến giữa hai thư mục, tôi đã chạy:
~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237
Kết quả này cho thấy có 14.237 trường hợp của cùng một tệp trong cả thư mục nguồn và thư mục đích, tôi đã xác nhận bằng cách kiểm tra các tệp theo cách thủ công - vâng, có nhiều tệp giống nhau trong cả hai thư mục. Điều này cho thấy rằng chỉ sau khi mv
sao chép những tập tin lớn thì nó mới thực hiện việc xóa các tập tin nguồn. Một tra cứu nhanh info
về mv
lệnh cho thấy
mv
Trước tiên, nó [ ] sử dụng một số mã tương tự được sử dụng cp -a
để sao chép các thư mục và tệp được yêu cầu, sau đó (giả sử bản sao thành công), nó sẽ xóa bản gốc. Nếu sao chép thất bại, phần được sao chép vào phân vùng đích sẽ bị xóa.
Tôi đã không chạy lệnh nhưng tôi nghi ngờ nếu tôi cố chạy
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Lời -i
nhắc trước khi ghi đè có thể đã kích hoạt hơn 14.000 lần.
Vì vậy, sau đó để tìm hiểu có bao nhiêu tập tin trong thư mục mới được tạo:
~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l
14238
Vì vậy, nếu có tổng số 14238 tệp thông thường trong thư mục mới và 14237 có bản gốc giống hệt trong nguồn, điều đó có nghĩa là chỉ có một tệp trong thư mục mới không có tệp giống hệt tương ứng trên nguồn. Để tìm hiểu tập tin đó là gì, tôi đã chạy rsync trở lại theo hướng của nguồn:
~% sudo rsync -av --dry-run my_data_on_60GB_partition/ /media/admin/my_data
sending incremental file list
./
Education_learning_reference/
Education_learning_reference/Business_Education/
Education_learning_reference/Business_Education/Business_education_media_files/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/018 business plans-identifying main KPIs.flv
sent 494,548 bytes received 1,881 bytes 330,952.67 bytes/sec
total size is 1,900,548,824 speedup is 3,828.44 (DRY RUN)
Kiểm tra nhanh đã xác nhận rằng đây là tệp không đúng định dạng, trong đó tệp tồn tại trên cả nguồn và đích, tệp đích = 64MB, gốc = 100MB. Tập tin này và hệ thống phân cấp thư mục của nó vẫn được sở hữu bởi root và chưa được khôi phục quyền ban đầu.
Vì vậy, tóm lại:
- tất cả các tệp
mv
không bao giờ đạt được vẫn quay lại vị trí ban đầu của chúng (rõ ràng)
- tất cả các tệp
mv
đã sao chép hoàn toàn vẫn có bản sao gốc trong thư mục nguồn
- tập tin chỉ được sao chép một phần vẫn có bản gốc trong thư mục nguồn
Nói cách khác, tất cả các tệp gốc vẫn còn nguyên và giải pháp trong trường hợp này là chỉ cần xóa thư mục mới!
Control-Z
(tạm dừng) chứ không phảiControl-C
. Trong trường hợp này, sau đó bạn sẽ có thể xem tệp nào đang được chuyển vào thời điểm đó và vì vậy biết tệp nào chỉ được sao chép một phần. Sau đó, bạn có thể quyết định bình tĩnh về cách tiến hành. (Sử dụngkill -stop
cho các quy trình không trong tty).