Гид по технологиям

Перенос папки /home на отдельный диск в Linux

10 min read Linux Обновлено 25 Dec 2025
Перенос папки /home на другой диск
Перенос папки /home на другой диск

Папка home в файловом менеджере Ubuntu

Быстрые ссылки

  • Почему отделять папку /home
  • Как найти новый диск в Linux
  • Создание раздела
  • Создание файловой системы на разделе
  • Монтирование нового диска
  • Копирование содержимого /home
  • Тестирование нового каталога /home
  • Редактирование fstab для автоподключения
  • Перезагрузка и финальные проверки
  • Что делать после переноса

Краткое содержание

  • Перенос папки /home на отдельный диск позволяет переустанавливать систему без потери личных данных.
  • Сделайте резервную копию важных данных перед началом работ.
  • Последовательность действий: обнаружить диск, создать раздел, отформатировать его, смонтировать, скопировать данные, обновить fstab — затем перезагрузить и проверить.

Почему отделять папку /home

Отдельный раздел для /home снижает риск потери пользовательских данных при переустановке системы или при обновлениях, которые требуют переформатирования корневого раздела. Распространённый сценарий: небольшой SSD для системы и большой HDD для пользовательских данных. Если /home на отдельном разделе, то вы можете переустановить систему на SSD, не затрагивая файлы на HDD.

Важно: если вы устанавливаете систему с нуля, большинство установщиков предлагают опцию отдельного раздела для /home. Если система уже установлена — используйте эту инструкцию для переноса без переустановки.

Что нужно знать заранее

  • Термины: раздел — логическая область на диске, файловая система — структура для хранения файлов (ext4, xfs, btrfs), точка монтирования — путь в дереве файловой системы, куда «прикрепляется» раздел.
  • Резервная копия. Создайте резервную копию /home (архив tar, внешний диск, облако).
  • Права доступа и владельцы должны быть сохранены при копировании. Копируйте с опциями, сохраняющими атрибуты.
  • Используйте UUID в /etc/fstab вместо /dev/sdXY для устойчивости при смене нумерации дисков.

Как найти новый диск в системе

Подключили новый диск и загрузили систему? Список дисков и разделов покажет команда fdisk:

sudo fdisk -l

Просмотрите вывод и найдите устройство, которого раньше не было. Примеры имён: /dev/sda, /dev/sdb, /dev/nvme0n1. В примере статьи новый диск — /dev/sdb.

Вывод fdisk с выделением /dev/sdb

Если диск новый — у него не будет разделов. Следующий шаг — создать раздел с помощью fdisk (для MBR) или gdisk/parted (рекомендуется для GPT).

Создание раздела на диске

Мы создадим один раздел, занимающий весь диск. В примерах используется fdisk:

sudo fdisk /dev/sdb

Далее в интерактивном режиме:

  • Нажмите n чтобы создать новый раздел.
  • Выберите p для первичного раздела.
  • Номер раздела: 1.
  • Для первого и последнего сектора нажимайте Enter, чтобы занять весь диск.
  • Нажмите w чтобы записать изменения на диск.

Создание раздела с помощью fdisk

После записи раздел появится как /dev/sdb1.

sudo fdisk /dev/sdb
# в интерактивном режиме нажмите p чтобы проверить

Примечание: для дисков с GPT используйте parted или gdisk. Пример создания единого раздела через parted:

sudo parted /dev/sdb --script mklabel gpt mkpart primary ext4 0% 100%

Создание файловой системы

После создания раздела отформатируйте его в нужную файловую систему. Чаще всего это ext4 для простоты и совместимости, но можно использовать xfs, btrfs и другие.

sudo mkfs.ext4 /dev/sdb1

Если ваш раздел получил другой идентификатор (например /dev/nvme0n1p1), подставьте актуальный путь.

Вывод mkfs при создании файловой системы

Для btrfs или xfs команды будут другие:

sudo mkfs.xfs /dev/sdb1
sudo mkfs.btrfs /dev/sdb1

Замечание по шифрованию: если нужен зашифрованный раздел, настройте LUKS перед созданием файловой системы и открывайте через cryptsetup.

Монтирование нового раздела во временную точку и подготовка

Смонтируйте новый раздел в /mnt чтобы скопировать данные:

sudo mount /dev/sdb1 /mnt
cd /mnt
ls -alh

Если на разделе присутствует каталог lost+found (появляется при mkfs.ext4), его можно удалить или оставить.

sudo rm -rf /mnt/lost+found

Содержимое смонтированного раздела

Копирование содержимого /home с сохранением прав и атрибутов

Рекомендуемая команда — rsync, она надёжнее и даёт индикаторы прогресса. Используйте опции, сохраняющие владельцев, права, ссылки и временные метки.

sudo rsync -aHAXv --progress /home/ /mnt/

Пояснение опций:

  • -a архивный режим (рекурсивно, сохраняет права и владельцев)
  • -H сохраняет жесткие ссылки
  • -A сохраняет ACL
  • -X сохраняет xattr (расширенные атрибуты)
  • -v подробный режим
  • –progress показывает прогресс

Если вы предпочитаете cp, используйте:

sudo cp -a /home/. /mnt/

Важно: внимательно проверьте, что слэши в командах стоят корректно (/home/ и /mnt/), чтобы избежать вложенных директорий.

После копирования проверьте:

ls -la /mnt
ls -la /mnt/username

Если вы обнаружите недостающие файлы — скопируйте вручную из /home.orig (см. дальше) или повторите копирование.

Резервная копия старой папки /home и подготовка точки монтирования

Для безопасности переименуем старую папку /home в /home.orig и создадим пустую /home как точку монтирования:

sudo mv /home /home.orig
sudo mkdir /home
sudo chmod 755 /home

Перед размонтированием удостоверьтесь, что вы не находитесь в /mnt или /home:

cd /
sudo umount /dev/sdb1

Затем смонтируйте на постоянную точку:

sudo mount /dev/sdb1 /home

Примечание: если во время монтирования появится ошибка “target is busy”, убедитесь, что в /mnt нет процессов или терминалов, находящихся в этой точке (используйте lsof или fuser).

sudo lsof +f -- /mnt
sudo fuser -vm /mnt

Проверка новой домашней директории

Проверьте точку монтирования и содержимое:

df -h /dev/sdb1
mount | grep /home
cd ~
pwd
ls -la

Проверьте, что dotfiles (файлы, начинающиеся с точки) и права доступа сохранены. Если всё в порядке, можно переходить к автоматическому монтированию через fstab.

Проверка содержимого /home

Использование UUID вместо /dev/sdXY в fstab

Нумерация /dev/sdXY может измениться при подключении новых дисков. Лучше использовать UUID раздела — он уникален и постоянен.

Найдите UUID раздела:

blkid /dev/sdb1

Вы увидите строку вида:

/dev/sdb1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"

Скопируйте UUID и отредактируйте /etc/fstab.

Перед редактированием сделайте резервную копию fstab:

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

Откройте /etc/fstab в редакторе:

sudo nano /etc/fstab

Добавьте строку в конце (пример с UUID):

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults 0 2

Пояснение полей fstab (по порядку):

  • UUID или устройство
  • точка монтирования
  • тип файловой системы
  • опции монтирования (defaults, noatime, nodiratime и т.д.)
  • dump (обычно 0)
  • fsck порядок проверки (0 — не проверять, 1 — корневой раздел, 2 — остальные)

Пример с опцией noatime (уменьшает количество записей на диск):

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults,noatime 0 2

Если вы используете xfs, fsck не умеет проверять XFS, поэтому ставьте 0 в шестом поле.

Проверка, не полон ли fstab ошибок

Прежде чем перезагружать систему, проверьте, что запись корректна, выполнив пробное монтирование всех записей из fstab:

sudo mount -a

Если команда возвращает без ошибок — всё ок. Ошибки покажут, что нужно исправить перед перезагрузкой.

Перезагрузка и финальные проверки

После успешного mount -a перезагрузите систему:

sudo reboot now

После перезагрузки проверьте, что /home смонтирован:

df -h | grep "/home"
mount | grep "/home"
ls -la /home

Если всё работает, и вы уверены, что вам не нужна резервная копия /home.orig, удалите её:

cd /
sudo rm -rf /home.orig

Не удаляйте /home.orig, пока не убедились, что все данные и настройки работают корректно.

Варианты и альтернативные подходы

  • Использование rsync вместо cp для надёжного копирования и повторных синхронизаций.
  • Использование LVM: размещение /home в логическом томе LVM даёт гибкость (удлинение тома, снимки).
  • Использование btrfs или ZFS с моментальными снимками и дедупликацией.
  • Настройка шифрования всего диска или только /home через LUKS.
  • Создание systemd mount unit вместо прописывания в fstab — полезно для сложных сценариев.

Когда этот метод может не подойти

  • Если у вас шифрованная домашняя директория, потребуется дополнительная настройка (раскрытие LUKS до монтирования).
  • Если отдельные пользователи используют network home (NFS) — перенос на локальный диск меняет поведение.
  • Если у вас профиль с установленными ACL и xattr, убедитесь, что файловая система поддерживает их (ext4 поддерживает, но требуется опциональная монтировка для некоторых хранилищ).

Проверочные сценарии и критерии приёмки

Критерии приёмки перед удалением /home.orig:

  • Все пользователи могут войти в систему и получить свои домашние каталоги.
  • Все dotfiles (конфигурации программ) присутствуют и имеют корректные права.
  • Программы, читающие/пишущие данные в домашние папки, работают как ожидается.
  • df показывает правильную точку монтирования для /home.

Тестовые шаги:

  1. Войти под несколькими пользователями.
  2. Открыть приложения, которые используют конфигурации из домашней папки (браузер, редактор, почтовый клиент).
  3. Создать/удалить файл, проверить права и владельца.
  4. Проверить наличие и содержимое скрытых конфигурационных файлов (.bashrc, .config).

Быстрое руководство по откату при проблемах

Если система не загружается из-за некорректного fstab:

  1. При загрузке выберите режим recovery или добавьте init=/bin/bash в параметры ядра через меню GRUB.
  2. Временное восстановление fstab: смонтируйте корень в режиме чтения/записи и восстановите /etc/fstab.orig.
mount -o remount,rw /
cp /etc/fstab.orig /etc/fstab
reboot

Если не можете зайти в систему через GUI, используйте live USB, смонтируйте корневой раздел и исправьте /etc/fstab.

Полезные подсказки и best practices

  • Используйте UUID в fstab вместо /dev/sdXY.
  • Не удаляйте старую /home сразу. Держите /home.orig как минимум до первой успешной недели работы.
  • Для больших объёмов данных или слабых дисков используйте rsync с –partial и –progress.
  • Для минимизации нагрузки установите опцию noatime.
  • Если в системе используется SELinux, перенесите контексты: после монтирования выполните restorecon -R /home или установите правильный контекст.
sudo restorecon -R /home

Чек-листы

Чек-лист перед началом работ:

  • Создана резервная копия /home (внешний диск или облако).
  • Проверено имя устройства нового диска (fdisk -l).
  • Имеется план восстановления при ошибке (fstab.orig, /home.orig).

Чек-лист после переноса перед удалением резервной копии:

  • Все пользователи входят и работают стандартно.
  • Приложения читают dotfiles.
  • Проверены права и владельцы файлов.
  • fstab корректно прописан и mount -a проходит без ошибок.

Роль-based список обязанностей (администратор):

  • Выполнить резервное копирование и проверить его целостность.
  • Создать раздел и файловую систему.
  • Настроить fstab и проверить автоподключение.
  • Провести тесты совместно с пользователями.

Роль-based список обязанностей (пользователь):

  • Проверить доступ к своим файлам и настройкам.
  • Сообщить об ошибках в конфигурациях приложений.

Полезные команды-образцы

Просмотр UUID:

blkid /dev/sdb1

Пробное монтирование всех записей из fstab:

sudo mount -a

Проверка занятых файлов / точек монтирования:

sudo lsof +f -- /mnt
sudo fuser -vm /mnt

Копирование с помощью rsync:

sudo rsync -aHAXv --progress /home/ /mnt/

Откат fstab с live-системы:

# смонтируйте корень из live-USB в /mntroot
cp /mntroot/etc/fstab.orig /mntroot/etc/fstab

Частые ошибки и пути их устранения

  • Ошибка после reboot: система падает на этапе монтирования — вероятно, неправильная запись в /etc/fstab. Загрузитесь в recovery/live и восстановите fstab из резервной копии.
  • Некоторые файлы отсутствуют — возможно, вы пропустили скрытые файлы. Проверьте rsync с опциями -aHAX.
  • Не получается смонтировать — проверьте правильность UUID и тип файловой системы (blkid, file -sL /dev/sdb1).
  • Проблемы с SELinux — выполните restorecon.

Примеры альтернативных конфигураций fstab

Mount с noatime для повышения производительности:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults,noatime 0 2

Если используете xfs и не хотите проверки fsck:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home xfs defaults 0 0

Примечания по безопасности и приватности

  • Если на диске будут храниться конфиденциальные данные, включите шифрование LUKS.
  • После переноса не оставляйте открытые резервные копии в доступных местах без шифрования.

Советы по миграции пользователей большого парка машин

  • Автоматизируйте процесс с Ansible/SSH-скриптами: создать раздел, форматировать, монтировать и запускать rsync удалённо.
  • Тестируйте на контрольной машине перед массовыми изменениями.
  • Подумайте о централизованном хранении профилей (NFS, LDAP) если требуется единообразие.

Короткая памятка после завершения

  • Проверьте, что /home монтируется автоматически при старте.
  • Удалите /home.orig только через некоторое время и после подтверждения, что всё работает.
  • Обновите документацию сервера/рабочей станции с новым расположением /home и UUID.

Дом — там, где /home

Отделив /home, вы упрощаете восстановление и обновление системы. Этот простой приём даёт гибкость и снижает риск потери личных данных — главное, действовать аккуратно, делать резервные копии и тестировать результаты.

| | Linux Commands | | Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr | | | Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | | | Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld | |

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Animated.loop в React Native: непрерывные анимации
Development

Animated.loop в React Native: непрерывные анимации

Как проверить и обновить ОЗУ в Windows
Железо

Как проверить и обновить ОЗУ в Windows

Как установить RPM в Fedora и RHEL
Linux

Как установить RPM в Fedora и RHEL

Ограничение учётных записей в Windows 10
Windows 10

Ограничение учётных записей в Windows 10

Острова вкладок в Opera One — руководство
Браузеры

Острова вкладок в Opera One — руководство

Trello: просто и эффективно управлять проектами
Продуктивность

Trello: просто и эффективно управлять проектами