Вопрос или проблема
Я случайно удалил все записи из файлов fstab во время резервного копирования (Да, я знаю ;)).
Хотел бы знать, есть ли способ восстановить его с текущими параметрами монтирования, поскольку я не перезагружал сервер с момента удаления. Если такой программы нет, не могли бы вы помочь мне его восстановить.
Используя это, я нашел команду для отображения текущей конфигурации, но не знаю, что с ней делать.
$ sudo blkid /dev/sda1: UUID="3fc55e0f-a9b3-4229-9e76-ca95b4825a40" TYPE="ext4" /dev/sda5: UUID="718e611d-b8a3-4f02-a0cc-b3025d8db54d" TYPE="swap" /dev/sdb1: LABEL="Files_Server_Int" UUID="02fc2eda-d9fb-47fb-9e60-5fe3073e5b55" TYPE="ext4" /dev/sdc1: UUID="41e60bc2-2c9c-4104-9649-6b513919df4a" TYPE="ext4" /dev/sdd1: LABEL="Expansion Drive" UUID="782042B920427E5E" TYPE="ntfs" $ cat /etc/mtab /dev/sda1 / ext4 rw,errors=remount-ro 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 none /sys sysfs rw,noexec,nosuid,nodev 0 0 none /sys/fs/fuse/connections fusectl rw 0 0 none /sys/kernel/debug debugfs rw 0 0 none /sys/kernel/security securityfs rw 0 0 none /dev devtmpfs rw,mode=0755 0 0 none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0 none /dev/shm tmpfs rw,nosuid,nodev 0 0 none /var/run tmpfs rw,nosuid,mode=0755 0 0 none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0 none /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 none /var/lib/ureadahead/debugfs debugfs rw,relatime 0 0 /dev/sdc1 /home ext4 rw 0 0 /dev/sdb1 /media/Files_Server ext4 rw 0 0 binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0 /dev/sdd1 /media/Expansion\040Drive fuseblk rw,nosuid,nodev,allow_other,blksize=4096,default_permissions 0 0 gvfs-fuse-daemon /home/yvoyer/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=yvoyer 0 0 /dev/sdd1 /media/Backup500 fuseblk rw,nosuid,nodev,sync,allow_other,blksize=4096,default_permissions 0 0 /dev/sr0 /media/DIR-615 iso9660 ro,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500 0 0 gvfs-fuse-daemon /home/cdrapeau/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=cdrapeau 0 0
Ну, я не знаю автоматического способа восстановить это, но по вашему коду, созданному вручную..
# <файловая система> <точка монтирования> <тип> <опции> <дамп> <порядок>
proc /proc proc nodev,noexec,nosuid 0 0
UUID=3fc55e0f-a9b3-4229-9e76-ca95b4825a40 / ext4 errors=remount-ro 0 1
UUID=718e611d-b8a3-4f02-a0cc-b3025d8db54d none swap sw 0 0
UUID=41e60bc2-2c9c-4104-9649-6b513919df4a /home ext4 defaults 0 0
UUID=02fc2eda-d9fb-47fb-9e60-5fe3073e5b55 /media/Files_Server ext4 defaults 0 0
Пожалуйста, дождитесь, пока несколько других людей просмотрят и одобрят это, прежде чем вы слепо скопируете и перезагрузите с этим, второй взгляд всегда полезен 😉
Я не включал sdd и sr0, поскольку они выглядят так, как будто обработаны gvfs.
Диски – GUI программа управляет fstab
. Вы можете перейти туда и установить ваши параметры монтирования для разделов в автоматическом режиме, выключив и снова включив их. Думаю, это восстановит ваш fstab
в режим по умолчанию.
blkid | grep /dev/sd | sed -r 's/:.* (UUID=[^ ]*).*/;\1/' | while read re; do sed -i "s;$re;" /etc/fstab; done
Эта команда работает для меня довольно хорошо. Она заменит имена устройств /dev/sd* в fstab на соответствующие UUID.
Использование программы Диски (как рекомендовал Dead) сработало для меня. После выбора раздела, который я хотел добавить в fstab, я использовал “Редактировать параметры монтирования…” и затем выбрал “Монтировать при запуске”.
Существует инструмент под названием genfstab
для недавних версий Ubuntu. genfstab
является частью пакета arch-install-scripts, установить его можно с помощью
sudo apt update
sudo apt install arch-install-scripts
Посмотрите на man genfstab
или просмотрите страницу man онлайн.
Следует перенаправить вывод команды в файл genfstab / > mygeneratedfstab
, который затем можно отредактировать с помощью вашего любимого текстового редактора, возможно, нам нужно будет удалить некоторые строки, так как вывод включает в себя устройства циклической записи от snap, которые мы не хотим видеть в нашем файле fstab
.
Ответ или решение
Чтобы автоматически восстановить файл fstab после его удаления, вы можете воспользоваться несколькими подходами. Вот инструкции по каждому из них:
1. Восстановление вручную
На основе вывода команды blkid
и текущей таблицы монтирования (mtab) можно создать новый файл fstab вручную. Вот пример, который подойдет для вашей ситуации:
# Пример файла /etc/fstab
# <файловая система> <точка монтирования> <тип> <опции> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
UUID=3fc55e0f-a9b3-4229-9e76-ca95b4825a40 / ext4 errors=remount-ro 0 1
UUID=718e611d-b8a3-4f02-a0cc-b3025d8db54d none swap sw 0 0
UUID=41e60bc2-2c9c-4104-9649-6b513919df4a /home ext4 defaults 0 0
UUID=02fc2eda-d9fb-47fb-9e60-5fe3073e5b55 /media/Files_Server ext4 defaults 0 0
# Дополнительно можете добавить свои устройства если нужно
Убедитесь, что у вас правильные UUID и точки монтирования, прежде чем сохранять изменения.
2. Использование программы Диски (Disks)
В графической утилите "Диски" (Disks) вы можете настроить параметры монтирования и автоматически обновить файл fstab. Для этого:
- Запустите программу "Диски" (можно найти через меню приложений).
- Выберите нужный раздел и нажмите "Изменить параметры монтирования…" (Edit Mount Options).
- Включите опцию "Монтировать при запуске" (Mount on startup) и сохраните изменения.
3. Автоматическое восстановление с помощью утилиты genfstab
В более новых версиях Ubuntu существует утилита genfstab
, которая может помочь с восстановлением. Выполните следующую команду для установки:
sudo apt update
sudo apt install arch-install-scripts
После установки вы можете сгенерировать новый fstab, используя команду:
genfstab / > mygeneratedfstab
Затем откройте сгенерированный файл в текстовом редакторе и удалите ненужные строки, такие как записи для loop-устройств (например, от snap).
4. Замена устройств с помощью команды sed
Если ваши устройства были потеряны, но остались их UUID, вы можете использовать следующую команду, чтобы заменить все /dev/sd*
на их UUID в fstab:
blkid | grep /dev/sd | sed -r 's/:.* (UUID=[^ ]*).*/;\1/' | while read re; do sed -i "s;$re;" /etc/fstab; done
Это позволит обновить fstab, заменив имена устройств на соответствующие UUID.
Заключение
После применения любого из предложенных методов не забудьте сделать резервную копию нового файла fstab и протестировать, перезагрузив систему. Если что-то пойдет не так, вы сможете восстановить старую конфигурацию.
Обязательно проверяйте изменения, чтобы убедиться, что они соответствуют вашему текущему окружению и необходимости.