1

Я использовал mv * .. в Unix, чтобы переместить все содержимое каталога в его родительскую папку. В текущем и родительском каталогах была папка "Загрузки". Тот в родителе был пуст для начала.

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

Есть ли способ узнать, где находятся эти файлы, или на этом этапе необходима программа восстановления данных, чтобы найти файлы, так как ничто больше не указывает на них в файловой системе?

2 ответа2

3

Вы можете запустить проверку файловой системы в случае, если некоторые узлы пропали без вести:

fsck -fyv /dev/sdaX

Вы должны изменить sdaX для вашего реального раздела. Но, насколько я знаю, если файл удален, он исчезнет навсегда. Вот почему я всегда запускаю cp и когда я вижу, что все в порядке, я запускаю rm . Вы также можете попробовать с инструментами восстановления данных, но это не на 100% гарантирует, что вы восстановите все. Как только вы уходите, вы никогда не возвращаетесь .

1

Вы должны быть осторожны с mv и cp: они не прощают, и вы можете легко потерять файлы, например: -

mv * ..    ; # moves from current directory to parent, overwriting duplicates

Я рекомендую всегда использовать -n или -i для предотвращения перезаписи. Я также предлагаю -v перечислить, что было сделано. Однажды я набрал опечатку (я поймал клавишу #, затем вернулся на клавиатуру):

mv * other/#

Это переместило первый файл в «other /#», затем переписало тот же «#» с каждым другим файлом, оставив только «#», содержащий последний перемещенный файл! Я не сделал это снова.

Поскольку я также использую TCC в Windows, я набрал, не задумываясь ожидая перехода к файлам с тем же именем в целевой директории:-

mv -iv * other/*    ; # In TCC, MOVE * other\* would do what I wanted

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

Что касается того, что случилось с вашими файлами: если вы знаете какое-либо из их имен, используйте find из родительского каталога, чтобы узнать, не переместили ли вы их куда-нибудь неожиданно. Если это не сработает, попробуйте родительский родитель. Вы можете быть удивлены тем, где они оказались.

Если вы не доверяете себе запоминать параметры, добавьте следующую команду (или аналогичную) в ~/.bashrc или ~/.bash_aliases:-

alias mv="`which mv` -iv"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .