Как автоматически восстановить fstab

Вопрос или проблема

Я случайно удалил все записи из файлов 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. Для этого:

  1. Запустите программу "Диски" (можно найти через меню приложений).
  2. Выберите нужный раздел и нажмите "Изменить параметры монтирования…" (Edit Mount Options).
  3. Включите опцию "Монтировать при запуске" (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 и протестировать, перезагрузив систему. Если что-то пойдет не так, вы сможете восстановить старую конфигурацию.

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

Оцените материал
Добавить комментарий

Капча загружается...