Я только что попытался переместить большое дерево с одного диска на другой, которое было слишком маленьким. Теперь у меня осталось кое-что, чего я не могу понять - похоже, что некоторые файлы действительно были удалены из дерева исходных текстов, в то время как другие были просто скопированы. Скорее всего, это не так, и я просто что-то пропускаю, как когда я проверял свободное место на целевом диске. : D
Команда была просто mv source-dir destination-dir
, где оба каталога находятся на разных дисках. Я использую mv (GNU coreutils) 7.4
. Нигде в справочной странице я не нашел ответов на следующие вопросы:
- могут быть созданы усеченные файлы?
- в случае ошибок что-нибудь в исходном дереве будет удалено?
- как восстановить (простым и быстрым способом)?
mv src1 src2 dst
работы в этом отношении похожи,mv src1 dst; mv src2 dst
и каждыйmv src dst
похожcp -a src dst && rm -rf src
?cp -a
он уже рекурсивный, я сомневаюсь, что он применяется к отдельным файлам и каталогам, найденным при обходе дерева. Сделаю несколько тестов позже.Когда mv перемещается в другую файловую систему, он сначала копирует все данные в новую файловую систему. Как только новые данные копируются, они удаляют старые данные. Это означает, что если перемещение было прервано из-за сбоя, исходное местоположение все равно должно содержать все данные.
Что касается восстановления, только данные назначения должны быть повреждены. Вместо того, чтобы снова использовать mv, просто используйте rsync, а затем вручную rm
источник