Как переместить домашнюю папку в linux
Перейти к содержимому

Как переместить домашнюю папку в linux

  • автор:

Как поменять домашнюю директорию для пользователя linux командой usermod

У каждого пользователя в Unix есть своя домашняя папка, предназначенная для хранения данных пользователя в месте, доступном только для него. О том, как узнать домашнюю директорию любого пользователя можно прочитать по → этой ссылке. О том, где и как создаются записи о домашнем каталоге пользователя написано в → этой статье. О том, как поменять домашнюю папку пользователя по умолчанию в Linux → по этой ссылке. Все перечисленные сведения полезны и могут помочь ручками поправить путь до домашнего каталога пользователя, однако для его смены есть удобная команда linux — usermod . То, как с её помощью быстро поменять домашнюю директорию для пользователя и рассмотрим ниже.

Помощь по команде usermod в linux

Зная название команды, лично я лезу в подсказки операционной системе по ней. Чего и всем советую. =) Данный случай не является исключением. Сперва посмотрим на те опции, которые описаны в хэлпе:

root@server:~# usermod -h Usage: usermod [options] LOGIN Options: -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups -h, --help display this help message and exit -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -R, --root CHROOT_DIR directory to chroot into -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER new SELinux user mapping for the user account

Как видно, опций у команды usermod более, чем достаточно, но для текущей цели (смены домашнего каталога пользователя) понадобится опция -d . Её и рассмотрим более подробно.

Как с помощью опции -d команды usermod в линукс поменять домашнюю директорию пользователя

Рассмотрим на живом примере. Создадим нового пользователя (как это сделать → подробно тут):

root@server:~# adduser newuser

Посмотрим на запись об этом пользователе в файле /etc/passwd . Она имеет следующий вид:

root@server:~# cat /etc/passwd . newuser:x:1000:1000. /var/www/newuser:/bin/bash . 

Посмотрим содержимое этой домашней папки (она пустая):

root@server:~# ls -l /var/www/newuser total 0 root@server:~# tree /var/www/newuser /var/www/newuser 0 directories, 0 files

И теперь сменим домашнюю папку этому пользователю:

root@server:~# usermod -d /var/www/newuser2 newuser root@server:~# ls -l /var/www/newuser2 ls: cannot access '/var/www/newuser2': No such file or directory root@server:~# cat /etc/passwd . newuser:x:1000:1000. /var/www/newuser2:/bin/bash . 
  1. Командой usermod -d /var/www/newuser2 newuser прописали папку /var/www/newuser2 в качестве домашней для пользователя newuser
  2. Но директория при этом не была создана. Это видно при попытке её прочитать: ls -l /var/www/newuser2
  3. Однако, запись в файле /etc/passwd была изменена.

Можно конечно создать эту папку вручную командой mkdir (читать тут), а потом прописать ей владельца и группу командой chown (читать тут), но проще и безболезненнее воспользоваться дополнительной опцией -m команды usermod . Важно, чтобы папка пользователя содержала хоть что-нибудь в себе. Даже просто пустой файл. Тогда и только тогда, новая папка будет создана и в неё будет перенесено содержимое старой папки.

Поэтому для того, чтобы поменять домашнюю директорию для пользователя linux, нужно воспользоваться командой usermod с опцией -md. При этом в папке пользователя должны храниться какие-нибудь данные.

Формат команды переноса:

usermod -md /путь_до_новой_домашней_папки username

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉

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

Хотите переместить домашнюю папку Linux на другой диск? Вот простой и пошаговый способ сделать это, который должен работать в любом дистрибутиве. Перемещение вашей домашней папки означает, что вы можете переустановить Linux и не беспокоиться о своих личных файлах.

Зачем хранить домашнюю папку отдельно?

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

Все более популярной конфигурацией современных персональных компьютеров является наличие твердотельного накопителя (SSD) среднего размера, на котором хранится ваша операционная система, и более крупного гибридного твердотельного накопителя (SSHD) или традиционного жесткого диска (HD) в качестве основного хранилища данных. Или у вас может быть один традиционный жесткий диск в вашей системе, и вы добавили новый жесткий диск для увеличения объема памяти. Какими бы ни были ваши причины, вот простое и подробное описание перемещения вашего домашнего каталога.

Кстати, если вы устанавливаете систему Linux с нуля, вы, вероятно, увидите возможность создать отдельный домашний каталог в программе установки вашего дистрибутива Linux. Как правило, вам просто нужно перейти к параметрам разбиения, создать отдельный раздел и смонтировать его в «/ home». Но если вы уже установили дистрибутив Linux, вы можете использовать эти инструкции, чтобы переместить текущий домашний каталог в новое место, ничего не теряя и не переустанавливая операционную систему.

Теперь, прежде чем мы начнем, идите и сделайте резервную копию.

Определите диск

Если вы только что установили диск на компьютер с Linux или установили Linux на один из дисков в новом компьютере с несколькими дисками и перезагрузились, мало доказательств того, что новый диск вообще присутствует.

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

sudo fdisk -l

Прокрутите вывод, пока не найдете новый диск. Первый диск называется /dev/sda , второй — /dev/sdb и так далее, причем последняя буква каждый раз увеличивается. Таким образом, /dev/sde будет пятым жестким диском в системе.

в этом примере новый диск является вторым диском, устанавливаемым в систему. Поэтому нам нужно найти запись для /dev/sdb .

/dev/sdb выделен выше. Вы заметите, что на нем нет строки, описывающей раздел. Это совершенно новый диск, поэтому его еще не будет. Нам нужно создать раздел. Мы можем сделать это с помощью fdisk . Если ваш жесткий диск не /dev/sdb , убедитесь, что вы заменили /dev/sdb фактическим идентификатором вашего нового жесткого диска в команде.

sudo fdisk /dev/sdb

Когда fdisk запросит команду, нажмите букву p . Это печатает таблицу разделов для жесткого диска. Мы знаем, что его не будет, но мы получаем некоторую полезную информацию о диске. Это дает нам хороший шанс убедиться, что диск, для которого мы собираемся создать раздел, является тем диском, с которым мы собирались работать.

Он говорит нам, что это диск емкостью 1 ТБ, что соответствует тому, что мы ожидаем от этой тестовой машины, поэтому мы продолжим.

Создать раздел

Нажмите букву n для нового раздела, а затем нажмите p для основного раздела. Когда вас попросят ввести номер раздела, нажмите цифру 1 .

Мы собираемся создать один раздел для всего диска, поэтому при появлении запроса на первый сектор мы можем нажать Enter, чтобы принять значение по умолчанию. Затем вам будет предложено ввести последний сектор, и Enter примет значение по умолчанию.

Хотя fdisk подтверждает, что он создал раздел Linux размером 1 ТБ, то есть раздел номер 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

Мы находимся в нашей новой файловой системе. Каталог «потерянные + найденные» по умолчанию не требуется, поэтому мы можем удалить его.

sudo rm -rf lost+found

Копирование вашей домашней папки

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

sudo cp -rp /home/* /mnt

Когда копирование завершится, используйте ls , чтобы осмотреться и убедиться, что ваши данные находятся там, где вы ожидаете, в новой файловой системе. Другими словами, если /mnt был вашим домашним каталогом, все ли присутствует и правильно?

ls dave

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

sudo mv /home /home.orig

И мы создадим новый пустой домашний каталог.

sudo mkdir /home

Мы будем использовать этот новый пустой домашний каталог в качестве точки монтирования нашей файловой системы на новом жестком диске. Нам нужно размонтировать его из /mnt и перемонтировать в /home . Обратите внимание, что в команде umount нет буквы «n» после «u».

Но сначала мы перейдем в корневой каталог (с помощью cd / ), чтобы убедиться, что мы не находимся в каталоге, который будет включен в места монтирования или размонтирования.

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

Тестирование вашего нового домашнего каталога

Давайте посмотрим, какие теперь атрибуты у раздела /dev/sdb1 :

df /dev/sdb1

Нам показывают имя файловой системы, размер раздела, а также используемое и доступное на нем место и, что немаловажно, куда он смонтирован. Теперь это наш каталог /home . Это означает, что мы должны иметь возможность ссылаться на него точно так же, как на старый каталог /home .

Если мы переместимся в какую-то произвольную точку в файловой системе, мы должны иметь возможность вернуться к /home с помощью сочетания клавиш ~ с тильдой.

cd /home
cd dave
ls -a

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

Если чего-то не хватало, мы могли скопировать это из каталога /home.orig , к которому у нас все еще есть доступ в корне файловой системы. Но все выглядит нормально.

Теперь нам нужно, чтобы /dev/sdb1 монтировался автоматически при каждом запуске компьютера.

Редактирование fstab

Файл «fstab» содержит описания файловых систем, которые будут монтироваться при загрузке системы. Прежде чем вносить в него какие-либо изменения, мы сделаем его резервную копию, к которой сможем вернуться в случае возникновения проблем.

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

Теперь мы можем редактировать файл fstab. Используйте свой любимый редактор, мы используем gedit . Подойдет любой текстовый редактор.

sudo gedit /etc/fstab

Вы должны добавить строку внизу файла, чтобы смонтировать наш новый каталог /home . Если идентификаторы вашего диска и раздела отличаются от используемых в этом примере, замените их на показанный здесь /dev/sdb1 .

  • Введите имя раздела в начале строки и нажмите клавишу Tab.
  • Введите точку подключения /home и нажмите клавишу Tab.
  • Введите описание файловой системы ext4 и нажмите клавишу Tab.
  • Введите defaults для параметров монтирования и нажмите клавишу Tab.
  • Введите цифру 0 для параметра дампа файловой системы и нажмите клавишу Tab.
  • Введите цифру 0 для параметра проверки файловой системы.

Сохраните файл fstab.

Перезагрузите вашу систему

Нам нужно перезагрузиться, чтобы убедиться, что все прошло по плану и что у вас есть беспрепятственное подключение к вашему новому каталогу /home .

Если это не так, у вас все еще есть подстраховка исходного каталога /home и файла fstab, который при необходимости можно восстановить. Благодаря принятым нами мерам предосторожности — копированию каталога /home и файлов fstab — вы можете легко вернуть свою систему в состояние, в котором она была до начала работы.

sudo reboot now

Окончательные проверки

Когда ваша система перезагрузится, давайте просто проверим, что ваш каталог /home действительно находится на вашем новом жестком диске, и ваша система каким-то образом (чудесным образом) не вернулась к использованию старого /home каталог.

df /dev/sdb1

Отлично, он смонтирован на /home . Миссия выполнена.

Как только вы будете полностью уверены, что вам больше не нужна безопасная копия вашего старого каталога /home , вы можете удалить ее:

sudo rm -rf home.orig/

И, конечно же, если вы поймете, что что-то не скопировалось из старого /home в новый /home , вы будете в состоянии получить его из резервной копии, которую вы сделали до того, как мы начали.

Дом, милый дом

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

А поскольку все ваши dotfiles находятся в вашем каталоге /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
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

RELATED: Best Linux Laptops for Developers and Enthusiasts

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.032 секунд. Запросов: 23.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Как перенести файлы пользователей (home) на отдельный раздел

Как перенести файлы пользователей (home) на отдельный раздел

Опубл.: 11.01.2020 |Изменено: 11.04.2023

Устанавливая Ubuntu впервые или купив компьютер с предустановленным Линуксом, вы скорее всего получите систему, целиком установленную на один единственный раздел.

Через какое-то время, попользовавшись Убунтой, обвыкнув, накопив знаний и файлов в пользовательском каталоге, вы, скорее всего, решите отделить свои личные данные от остальной системы: вынести их на отдельный раздел, который может находиться как на том же самом, так и на другом диске.

В этой статье рассмотрим именно сам процесс переноса на уже подготовленный раздел.

Подготовить диск совсем несложно, но если вам нужно об этом узнать, отмечайте в комментариях удивлённый (��) смайлик.

5 смайликов, и я допишу про подключение диска и форматирование раздела.
ОКЕЙ! Набралось пять смайлов. В течение следующих семи дней напишу про форматирование .

Дано

  • Убунту 18.04, установленная целиком на один раздел.
  • Подготовлен другой раздел (отформатированный в ext4) для переноса домашнего каталога.

Задача

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

План

  1. Примонтировать новый раздел во временное расположение и скопировать содержимое папки /home на него с сохранением разрешений. Саму папку не трогать.
  2. Проверить что все файлы корректно скопировались. ДВА РАЗА. Только когда убедимся, что всё перенесено в новое место, безвозвратно удалить все файлы из старого расположения.
  3. Настроить параметры подключения нового раздела, чтобы при загрузке он автоматически монтировался в /home .
  4. Перезагрузиться и проверить, что всё работает.

Инструменты

Для выполнения задачи нужны всего две программы:

Диски

Терминал

Решение

Подключаем раздел

Действуем строго согласно плану. Подключаем новый раздел во временное место.

В дополнительном меню раздела выбираем пункт

Запускаем «Диски», выбираем диск (1), выбираем раздел диска (2) на который мы будем переносить файлы, открываем параметры подключения раздела (3, 4).

Чтобы отредактировать параметры, выключим параметры по умолчанию (1). Затем уберём галочку (2): это не обязательно прямо сейчас, просто сразу сделаем всё нужное, что не мешает двигаться дальше. Сократим точку подключения (3), чтобы меньше было потом набирать в терминале. ОК.

С «Дисками» пока всё. Но не закрывайте окно. Мы скоро сюда вернёмся.

Переходим ко второму пункту плана. Будем переносить файлы.

Копируем файлы

Если до этого момента у вас были открыты какие-то ещё программы, пожалуйста, закройте их все (кроме «Дисков», конечно).

Запустите «Терминал» и введите в нём следующую команду (но не нажимайте пока Enter, не торопитесь!):

sudo cp -a /home/* /mnt

Рассказываю, что значит каждый символ этой команды:

  • sudo — означает, что команду следует выполнять от имени суперпользователя (Администратора). Сокращение от SuperUser DO.
  • пробел (столкнулся на практике, что некоторым пользователям не очевидно — в каком месте команды нужны пробелы, а в каком нет. Поэтому прям вот так, да)
  • cp — Собственно команда копирования. Сокращение от CoPy.
  • пробел
  • -a — опции команды. В данном случае она одна, но может быть и больше. Эта опция говорит команде, что нужно сохранить все параметры файлов нетронутыми. Без неё доступ к файлам пропадёт, и вы не сможете ими нормально пользоваться.
  • пробел
  • /home/* — Источник, из которого файлы будут скопированы. /home — системная папка, где размещаются личные папки всех пользователей. * — маска, которая говорит, что нужно копировать не саму папку /home , а каждый элемент, который в ней находится: то есть папку каждого пользователя в отдельности.
  • пробел
  • /mnt — Папка назначения, в которую файлы будут скопированы.

В зависимости от того, сколько файлов у вас в пользовательских папках, после нажатия Enter, команда может «подвиснуть» на некоторое время. Не пугайтесь, она работает, но ничего не показывает. Если вам спокойнее видеть, что что-то происходит, можете добавить параметр -v к команде.
Получится sudo cp -av /home/* /mnt

Нажимаем Enter, вводим пароль вашего пользователя (когда вводите пароль, в терминале это никак не будет отображаться; всё нормально) и ждём, пока данные скопируются.

Перенос ещё не закончен. Не закрывайте «Терминал».

Переходите обратно в «Диски».

Если вы ничего лишнего не тыкали, в «Дисках» у нас всё ещё выбран наш новый раздел. Под ним информация.

Нажмите на голубую ссылку и в файловом менеджере откроется наш новый раздел со всей скопированной информацией.

Самое важное

Зайдите в папку с именем вашего пользователя и проверьте следующие вещи:

Если на этом этапе вам кажется, что что-то не в порядке — остановитесь. Не продолжайте дальше. Перепроверьте себя столько раз сколько нужно, пока не будете уверены, что всё сделали верно.

Нашли ошибку?
  • Вернитесь в «Диски»,
  • отмонтируйте раздел,
  • в параметрах подключения включите переключатель (1)
  • Повторите подготовку раздела к переносу (отформатируйте его, чтобы стереть свои ошибки),
  • начните всё сначала.

Всё хорошо? Идём дальше.

Удаляем старые файлы

Возвращаемся в «Терминал».

Внимание! Следующая команда, при неосторожном использовании, может удалить вообще всё на свете. Я вас предупредил.

Введите команду и нажмите Enter. Она безвозвратно удалит всё из домашней папки:

sudo rm -rf /home/*

  • rm — команда удаления. Сокращение от ReMove.
  • -rf — две опции.
    • -r — удалять все папки и подпапки со всем содержимым.
    • -f — лишних вопросов не задавать.

После выполнения этой команды система может начать вести себя немного странно.

Это нормально. Если она будет говорить что «Что-то пошло не так» или снова предлагать узнать «Что нового в Ubuntu», просто закройте эти окна и не обращайте внимания.

Мы немного сломали обычный порядок вещей и сейчас будем его восстанавливать.

Финальная настройка раздела

Возвращаемся в «Диски» и снова открываем параметры подключения раздела.

Меняем точку подключения на /home . OK.

Чтобы проверить, что файлы пользователей теперь расположены на новом разделе, снова запускаем «Диски», выбираем наш раздел и в информации ниже видим, что он подключен как /home .

Поддержать выход новых материалов

https://www.donationalerts.com/r/cbagpipe — в сообщении можете задать вопрос и указать контакт для ответа, прислать идею для нового контента или просто похвалить меня ��.

Все, кто поддерживает мою работу, увековечены на отдельной странице.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *