Як перемістити домашній каталог Linux на інший диск

Бажаєте перенести свою домашню директорію Linux на інший фізичний носій? Пропонуємо легкий і детальний алгоритм, який має спрацювати на будь-якій збірці Linux. Переміщення домашньої папки дає вам можливість перевстановити Linux без побоювань втратити свої персональні файли.

Навіщо зберігати домашню папку на окремому диску?

Якщо ви налаштовуєте новий комп’ютер або додаєте ще один жорсткий диск до вже існуючого, у вас може виникнути потреба розмістити домашній каталог на диску, відмінному від системного.

Сучасна конфігурація персонального комп’ютера часто включає в себе SSD-накопичувач середнього об’єму, на якому розміщується операційна система, і більший SSHD або HDD як основне сховище для ваших даних. Або, можливо, у вас є один традиційний HDD, і ви додали ще один для збільшення об’єму. Якими б не були причини, ось простий спосіб перемістити ваш домашній каталог.

Якщо ви інсталюєте Linux з нуля, то, швидше за все, програма встановлення дистрибутива запропонує створити окремий домашній каталог. Як правило, вам потрібно лише налаштувати параметри розділів, створити новий розділ і змонтувати його в “/home”. Але якщо ви вже маєте встановлений Linux, цей посібник допоможе вам перенести наявну домашню директорію в нове місце, не втрачаючи даних і не перевстановлюючи ОС.

Перш ніж розпочати, зробіть резервну копію.

Ідентифікація диска

Після встановлення диска в комп’ютер з Linux, або встановлення Linux на один з дисків нового комп’ютера, і його перезавантаження, може бути неочевидним, що новий диск взагалі присутній в системі.

Команда fdisk покаже нам список дисків та їхніх розділів.

sudo fdisk -l

Перегляньте вивід команди, поки не знайдете новий диск. Перший диск матиме назву /dev/sda, другий – /dev/sdb і т.д., з послідовним збільшенням літери. Отже, /dev/sde буде п’ятим диском у системі.

У нашому прикладі, новий диск – це другий, доданий до комп’ютера. Тому нам потрібно знайти запис для /dev/sdb.

На зображенні вище /dev/sdb виділено. Зверніть увагу, що він не містить рядка з описом розділу. Це новий диск, тому розділів на ньому ще немає. Нам потрібно створити розділ. Це можна зробити за допомогою fdisk. Якщо ваш диск має інше ім’я, ніж /dev/sdb, то переконайтеся, що в команді ви вказали правильний ідентифікатор.

sudo fdisk /dev/sdb

Коли fdisk запропонує ввести команду, натисніть клавішу p. Це виведе таблицю розділів для жорсткого диска. Ми знаємо, що її не буде, але отримаємо корисну інформацію про диск. Це дасть нам можливість переконатися, що ми працюємо з правильним диском.

Вона показує, що диск має об’єм 1 ТБ, що відповідає очікуванням, тому ми можемо продовжувати.

Створення розділу

Натисніть клавішу n для створення нового розділу, а потім p для основного розділу. Коли запитає номер розділу, введіть 1.

Ми збираємося створити один розділ на весь диск, тому коли запитає перший сектор, натисніть Enter, щоб прийняти значення за замовчуванням. Після цього буде запит на останній сектор, і натискання Enter також прийме значення за замовчуванням.

Хоча fdisk і підтвердив створення розділу Linux на 1 ТБ, насправді поки що нічого не змінилось. Поки ви не дасте fdisk команду для запису змін на диск, нічого не відбудеться. Коли ви переконаєтесь, що задоволені вибором, натисніть w, щоб записати зміни.

Розділ записано на /dev/sdb. Давайте перевіримо результат. Знову скористаємось fdisk для /dev/sdb.

sudo fdisk /dev/sdb

Натисніть p, щоб вивести таблицю розділів, і ви побачите, що на диску тепер є розділ. Оскільки він перший, то має назву /dev/sdb1. Другий розділ матиме назву /dev/sdb2 і т.д.

Нам не потрібно вносити жодних змін, тому натисніть q для виходу.

Створення файлової системи на розділі

Необхідно створити файлову систему на розділі. Це легко зробити за допомогою команди mkfs. Зверніть увагу, що в команді потрібно вказати номер розділу. Переконайтеся, що вводите /dev/sdb1 (розділ), а не /dev/sdb (диск).

sudo mkfs -t ext4 /dev/sdb1

Файлова система буде створена, і ви повернетесь до командного рядка.

Монтування нового диска

Щоб використовувати новий диск, необхідно змонтувати розділ на ньому в точку монтування у файловій системі. Правильніше казати, що ми монтуємо файлову систему на розділ, прикріплюючи її до дерева файлової системи.

Точка /mnt – цілком підходяще місце. Це лише тимчасова точка монтування, яка дозволить нам скопіювати дані на новий диск. Скористаємось командою mount для монтування файлової системи на першому розділі /dev/sdb, за адресою /mnt.

sudo mount /dev/sdb1 /mnt

Якщо все пройде вдало, ви повернетесь до командного рядка без повідомлень про помилки. Давайте перевіримо, чи можемо ми змінити каталог на щойно змонтовану файлову систему.

cd /mnt

Так, можемо. Подивимось, що тут є.

ls -ahl

Ми в новій файловій системі. Каталог “lost+found” за замовчуванням нам не потрібен, тож можемо його видалити.

sudo rm -rf lost+found

Копіювання домашньої папки

Нам потрібно скопіювати все зі старого домашнього каталогу в щойно змонтовану файлову систему. Параметри r (рекурсивний) та p (збереження) забезпечать копіювання всіх підкаталогів, а також збереження прав власності, дозволів та інших атрибутів.

sudo cp -rp /home/* /mnt

Після завершення копіювання скористайтеся командою ls, щоб переконатися, що ваші дані на місці, і все правильно. Якщо /mnt є вашим домашнім каталогом, то чи все на місці та в порядку?

ls
ls dave

Можливо, ви захочете провести перевірку ретельніше, ніж на тестовій машині під час написання статті. Для безпеки ми перейменуємо і збережемо ваш старий каталог /home до того часу, поки не переконаєтесь, що його можна видалити.

sudo mv /home /home.orig

І створимо новий, порожній домашній каталог.

sudo mkdir /home

Будемо використовувати цей порожній каталог як точку монтування файлової системи на новому жорсткому диску. Потрібно відключити його від /mnt і знову змонтувати на /home. Зверніть увагу, що в команді umount немає “n” після “u”.

sudo umount /dev/sdb1
sudo mount /dev/sdb1 /home/

Тестування нового домашнього каталогу

Подивимось, які атрибути тепер має розділ /dev/sdb1:

df /dev/sdb1

Нам показує ім’я файлової системи, розмір розділу, використаний і доступний простір, а також, що важливо, де він змонтований. Тепер це наш каталог /home. Це означає, що ми можемо звертатися до нього так само, як і до старого /home.

Якщо ми перейдемо в довільну точку файлової системи, то зможемо повернутися до /home за допомогою ярлика ~ tilde.

cd /
cd ~
pwd
ls

cd /home
ls
cd dave
ls
ls -a

Ми можемо пересуватися по файловій системі до /home як за допомогою прямих команд, так і за допомогою ярлика ~. Папки, файли та приховані файли на місці. Все виглядає добре.

Якщо чогось не вистачає, то можна скопіювати з каталогу /home.orig, до якого все ще є доступ у корені файлової системи. Але все виглядає добре.

Тепер потрібно забезпечити автоматичне монтування /dev/sdb1 під час кожного запуску комп’ютера.

Редагування fstab

Файл “fstab” містить опис файлових систем, які монтуються під час завантаження системи. Перш ніж вносити зміни, зробимо його резервну копію, до якої можна повернутись у разі проблем.

sudo cp /etc/fstab /etc/fstab.orig

Тепер можна редагувати fstab.

sudo gedit /etc/fstab

У нижню частину файлу необхідно додати рядок для монтування нового каталогу /home. Якщо ідентифікатори вашого диска і розділу відрізняються від прикладу, то замініть їх на /dev/sdb1, який показаний тут.

Введіть назву розділу на початку рядка, а потім натисніть Tab.
Введіть точку монтування /home і натисніть Tab.
Введіть опис файлової системи ext4 і натисніть Tab.
Введіть значення за замовчуванням для параметрів монтування та натисніть Tab.
Введіть цифру 0 для параметра дампу файлової системи та натисніть Tab.
Введіть цифру 0 для параметра перевірки файлової системи.

Збережіть файл fstab.

Перезавантаження системи

Потрібно перезавантажитися, щоб перевірити, чи все працює так, як потрібно, і чи є стабільний доступ до нового каталогу /home.

Якщо щось піде не так, у вас все ще є резервна копія початкового каталогу /home та файлу fstab, які можна відновити при потребі. Завдяки заходам безпеки – копіювання каталогу /home та файлу fstab – ви з легкістю повернете систему до стану, в якому вона була до початку дій.

sudo reboot now

Фінальні перевірки

Після перезавантаження системи, перевіримо, чи дійсно /home знаходиться на новому жорсткому диску, і система не повернулась до старого /home.

df /dev/sdb1

Чудово, він змонтований на /home. Місію виконано.

Коли ви остаточно впевнитеся, що резервна копія старого каталогу /home не потрібна, можна її видалити:

cd /
sudo rm -rf home.orig/

Звичайно, якщо щось не скопіювалось зі старого каталогу /home, можна отримати це з резервної копії, яку ви зробили перед початком.

Дім, милий дім

Тепер, коли ви відокремили свій каталог /home від решти розділів операційної системи, можна перевстановлювати ОС без побоювань за свої дані. Все, що потрібно зробити – відредагувати файл fstab для підключення другого диска до /home.

А оскільки всі ваші файли налаштувань розміщено у /home, коли ви запускаєте програми, вони знайдуть всі ваші налаштування, параметри та дані.

Це спрощує перевстановлення та зменшує ризики під час оновлення.