Вы всегда можете сделать резервную копию вашего 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
Пока контейнер работает, файл нельзя удалять с жесткого диска.
Вы можете найти индексный узел с помощью lsof
и, возможно, восстановить файл с помощью debugfs
, как описано в ответе Эндрю Галлахера на этот вопрос .
Если вы можете подключить внешний диск к своему серверу, вы можете попробовать принятый ответ и скопировать туда файл.
[не полный ответ, но слишком длинный, чтобы комментировать]
Вы можете найти индексный дескриптор (возможно удаленного )резервного файла петлевого устройства с помощью LOOP_GET_STATUS
или LOOP_GET_STATUS64
ioctl :это поле .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