Команда mv удалила исходные файлы, хотя файл не был полностью перемещен

768
Eli O

Я использовал команду mv для перемещения нескольких файлов из каталога A в каталог B. Файловая система, в которой расположен каталог B, была переполнена, поэтому я получил соответствующие сообщения. Однако файлы были перемещены пустыми (размер 0), а исходные файлы были удалены. Итак, я потерял практически все файлы, которые собирался переместить. Так оно и должно себя вести?

0
Вы перемещались в одной и той же файловой системе или в разных файловых системах? Barmar 7 лет назад 0
Насколько я могу сказать, это не должно произойти. См. Http://unix.stackexchange.com/questions/76727/mv-has-failed-because-of-insufficient-disk-space-what-now и http://unix.stackexchange.com/questions/43014/what -does-мв-ду-в-случае-из-ошибок / 43017 # 43017 Barmar 7 лет назад 0
Нет, это не то, как он должен себя вести, но, возможно, вы обнаружили ошибку в `mv` в любом используемом вами Linux. У вас не должно быть целевых файлов при сбоях, а не файлов нулевой длины. В качестве альтернативы может возникнуть проблема с драйверами для целевой файловой системы. AFH 7 лет назад 1
Он не должен вести себя так - в некотором смысле: никто не хочет, чтобы он вел себя так. Я предполагаю, что другое объяснение (помимо ошибки в `mv`) - это ошибочная / ненадежная целевая файловая система, какой бы она ни была, которая посылала вам сообщения, но заставляла` mv` верить, что все прошло хорошо. Kamil Maciorowski 7 лет назад 0
Вы переходили из одного раздела в другой (либо с одного диска на другой, либо внутри диска)? Это единственный случай, когда это могло произойти. Не могли бы вы предоставить полную команду `mv`, которую вы использовали, полные пути` src` и `dst` и вывод` sudo mount`? prateek61 7 лет назад 0

1 ответ на вопрос

1
anotherguy

Вы двигались через точку монтирования? Обычно mv работает просто переименовывая файл. Полное имя файла включает его абсолютный путь, поэтому переименование и перемещение - это одна и та же команда.

Однако, если новое расположение находится под точкой монтирования, отличной от более старой, переименование не может работать, поскольку файл физически находится в другом разделе.

В этом случае mv копирует и удаляет файл. Эта операция, однако, не так надежна, как я понял из личного опыта. Он не всегда проверяет, успешно ли выполнено копирование перед удалением.

Откровенно говоря, для mv совершенно бесполезно даже пытаться вести себя таким образом, когда вы должны просто использовать команду cp, а затем команду rm при каждой передаче информации через точки монтирования.

Создавая простую команду для выполнения закулисной магии без ведома пользователя, авторы этой команды создали менее прозрачную систему в дополнение к еще одной склонной к ошибкам.

Я не переименовывал, а просто перемещал файлы из основного каталога лендинга в каталог архива. Eli O 7 лет назад 0

Похожие вопросы