2016-07-14 2 views
-2

Я хотел удалить символическую ссылкуBash: Определение частичного удаления содержимого

rm -rf name

, но вместо этого используется

rm -rf name/

Я думаю, что мне потребовалось второе, чтобы понять ошибку и отменили Это. Это массивный каталог с сотнями gbs данных. Так что в любом случае потребуется много времени.

  1. Поскольку команда была неполной, являются частично обработанные файлы восстанавливаются (как mv), или они уже удалены навсегда?

  2. Если они безвозвратно удалены, можно ли узнать, что было удалено? Удаляется ли он в том же порядке, что и ls (в алфавитном порядке)?

  3. Есть ли журнал удаленных файлов из системы?

ОС - это научный Linux. Файловая система - nfs (df -T).

+0

Не вопрос вопроса. У вас будет * точный * то же поведение от любого инструмента (оболочки, языка программирования и т. Д.), Вызывающего 'rm', или даже вызывающего syscall' unlink() непосредственно. –

+1

... тоже не вопрос программирования. Я бы предложил либо http://superuser.com/, либо http://unix.stackexchange.com/ –

+2

, который сказал, что любые файлы, которые были отсоединены, склонны к тому, чтобы их блоки перераспределялись на новый контент, который был написан. Нет, отмена процесса не восстанавливает ссылки. –

ответ

1

Обратите внимание, что я все еще держу этот вопрос вне темы здесь ... но не может навредить явным ответам на каждую ветвь вопроса в одном месте, и если этот ответ будет перенесен в SuperUser с помощью вопрос, тем лучше:


  1. Поскольку команда была неполной, являются частично обработанные файлы восстанавливаются (как мв), или они уже удалены навсегда?

Так же, как индивидуальный rename() во время системного вызова рекурсивной mv в пределах одной файловой системы, отдельного unlink() одного файла атомное - это либо завершает или не на основе файлов с помощью файла , Нет никакого «полузавершенного» состояния, и более крупные транзакции охватывают несколько файлов, которые можно отбросить; каждая отдельная запись в каталоге либо будет удалена, либо нет.

Аналогичным образом, любой файл, который не имеет остальных записей в каталоге (например, «hardlinks»), указывающих на него или открывающих дескрипторы файлов в конце unlink(), сразу же может быть удалён, хотя файловая система по своему усмотрению к тому, когда и при каких обстоятельствах фактически можно стереть или повторно использовать базовые блоки, где хранятся его данные, или данные отслеживания, которые указали, какие блоки были связаны с каждым удаленным впоследствии файлом.

  1. Если они безвозвратно удалены, можно ли узнать, что было удалено? Удаляется ли он в том же порядке, что и ls (в алфавитном порядке)?

Не в общем.Существуют конкретные файловые системы, которые можно использовать для отслеживания любых изменений между моментальными снимками или даже восстановления в определенный момент времени (хотя они, как правило, коммерческие и, следовательно, доступны только, если ваш администратор платит за них), а также инструменты мониторинга (например, sysdig), которые записывают индивидуальные системные вызовы.

Если, например, ваш системный администратор работает с ZFS или btrfs с моментальными снимками cronned, они могут сравнить список существующих файлов с теми, которые существовали с момента последнего моментального снимка.

  1. Есть ли журнал удаленных файлов из системы?

Не в общем. Если на вашем сайте запущено Sysdig Cloud или коммерческий файловый сервер с нестандартным поведением, то, может быть, - но ваши сотрудники системного администратора будут людьми, которые могли бы ответить на этот вопрос.

+1

Я связался с администратором, и оказалось, что моментальные снимки были включены. Тогда я мог бы просто сравнить текущий каталог со старым снимком с помощью 'diff', и были удалены 4 больших файла, которые были легко восстановлены. Спасибо за помощь. – rmf

Смежные вопросы