Восстановить удаленный, но смонтированный циклический файл/файловую систему

Вы всегда можете сделать резервную копию вашего sources.list, прежде чем что-то менять.

Но да, похоже, вам нужно закомментировать повторяющиеся строки. Попробуйте это:

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

sudo sort -u /etc/apt/sources.list.bak > /etc/apt/sources.list

2
18.12.2019, 21:22
2 ответа

Пока контейнер работает, файл нельзя удалять с жесткого диска.

Вы можете найти индексный узел с помощью lsofи, возможно, восстановить файл с помощью debugfs, как описано в ответе Эндрю Галлахера на этот вопрос .

Если вы можете подключить внешний диск к своему серверу, вы можете попробовать принятый ответ и скопировать туда файл.

-1
27.01.2020, 22:16

[не полный ответ, но слишком длинный, чтобы комментировать]

Вы можете найти индексный дескриптор (возможно удаленного )резервного файла петлевого устройства с помощью LOOP_GET_STATUSили LOOP_GET_STATUS64ioctl :это поле .lo_inodeв loop_infoи loop_info64структур.

Поскольку мне не удалось найти ни одной утилиты командной строки, раскрывающей эту информацию, вот лайнер perl one -, который должен это сделать:

perl -le 'ioctl STDIN, 0x4C05, $s = pack "a512" or die "ioctl: $!"; print unpack "x[Q]Q", $s' </dev/loop1
1179684

Дополнительные сведения см. на справочной странице loop(4)и в файле /usr/include/linux/loop.h.

Но я не знаю, есть ли безопасный способ восстановить удаленный файл по его индексному узлу :Я не думаю, что вы можете использовать debugfs(8)на смонтированной активной файловой системе, не испортив ее без возможности восстановления, и невозможно создать ссылку на удаленный файл.

Единственный безопасный способ, который я могу придумать, это скопировать все устройство/раздел цикла, пока он еще жив:

cp --sparse=always /dev/loop1 /path/where/to/save/it
2
27.01.2020, 22:16

Теги

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