Ubuntu копия всей системы удаленно, сыпется диск

Submitted by admin on Mon, 05/08/2023 - 10:07

Проблема: есть ОС Ubuntu на удаленном компьютере, сыпется винчестер, с каждый днем загружается все хуже и хуже (перед каждым запуском надо пробегаться fsck c исправлениями). Зачастую загружается в read-only режиме, sudo не помогает писать в него. Из небольшой инфраструктуры разбросанных по городам компьютеров это 1 из 9 компьютеров, где важен не только бэкап базы данных и home директории, но и все установленные и перенастроенные пакеты.

Решение: сделать полный бэкап файловой системы, залить на новый жесткий диск и отправить посылкой для замены. Далее подробнее.

Проблема: есть ОС Ubuntu на удаленном компьютере, сыпется винчестер, с каждый днем загружается все хуже и хуже (перед каждым запуском надо пробегаться fsck c исправлениями). Из небольшой инфраструктуры разбросанных по городам компьютеров это 1 из 9 компьютеров, где важен не только бэкап базы данных и home директории, но и все установленные и перенастроенные пакеты.

Решение: сделать полный бэкап файловой системы, залить на новый жесткий диск и отправить посылкой для замены.

SSH доступ к компьютеру

У каждого свой вариант подключения к удаленному ssh, т.к. у меня 1 выделенный IP на все 9 компьютеров разбросанных по городам, работаю через "посредника" в лице роутера с dd-wrt и ssh туннелями. Подробнее писал в статье "удаленное управление ssh", поэтому в этой не буду подробно описывать строки связанные с установкой туннеля, но вероятно, буду их указывать.

Делаем архив системы

Вариант с полной копией ФС не подходит, диск "больного" большой, но почти пустой, с dd пришлось бы лить по сети сотни ГБ данных. Поэтому делаем tar.gz с архивом файлов.

На "больном" компьютере:

tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 

(подробности в этой статье)

Скачиваем архив

Файл выходит большой поэтому вместо стандартного scp используем rsync с опцией partial, что поможет нам докачивать файл при обрывах.

#пробрасываем локальный порт на нужный порт роутера
autossh -M 0 -fNgX -L 5529:localhost:5529 root@ВВВ.ААА.ШШШ.ИПП
#скачиваем себе файл
rsync --partial --progress --rsh="ssh -p5529" toopro@localhost:/remote/dir/backup.tar.gz /local/dir/backup.tar.gz

где 5529 порт с ssh "больного" компьютера, toopro - имя пользователя
Ждем загрузки.

Совет. Для проверки целостности скачанного файла можно сравнить его хеш. Для этого на обоих компьютерах для файла возьмем sha хэш с помощью команды:
sha1sum backup.tar.gz (нужно будет подождать). Если оба хеша равны, вы имеете одинаковые файлы.

Распаковываем архив

Для распаковки, подключите новый винчестер, разбейте его, подключите раздел, на который нужно записать систему. В GUI версии для подключения раздела нужно просто зайти на него в файловом менеджере. В адресной строке вы увидите что-то типа:
/media/toopro/1fa75349-3ac0-4787-bec3-5bfc35ec46ae

Распаковываем наш бэкап операционной системы в эту папку:

sudo tar -xvpzf backup.tar.gz -C /media/toopro/1fa75349-3ac0-4787-bec3-5bfc35ec46ae --numeric-owner

Замечание. В моем случае, полный бэкап не хотел распаковываться. Вылетала ошибка, несмотря на то, что хеши совпадали. Пришлось перекидывать по частям.