Перенос раздела /home

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

ПРИМЕЧАНИЕ

Некоторые программы, среди которых и видеоподсистема X Window, используют для обмена данными специальные файлы FIFO или сокеты (о них чуть дальше). Если их негде будет создавать, то программа просто не запустится.

По мере наполнения файла или с появлением опыта возникает вопрос, как перенести на другой раздел некоторые данные и изменить  точку монтирования. На пользовательских системах  чаще всего выносят на  отдельный раздел каталог /home. Ничего сложного в этом нет. Но простое копирование командой ср -R каталогов даст непредсказуемый результат, и все из-за того, что кроме обычных файлов внутри могут быть специальные файлы или ссылки. Однако команда ср имеет специальные ключи, которые позволяют перенести данные со всеми атрибутами, включая права доступа к файлу.

Для примера перенесем раздел /home в раздел /dev/sda5. Создание и форматирование файловой  системы  и  подробности работы с командой mount мы рассмотрим далее в этой главе, пока ограничимся командами.

Создаем каталог, в который смонтируем /dev/sda5:

$ sudo mkdir /mnt/home

Монтируем /dev/sda5 в /mnt/home:

$ sudo mount /dev/sda5 /mnt/home

Теперь копируем файлы из каталога /home в /mnt/home. Это можно сделать либо используя  команду ср, либо предварительно  создав архив.

$ sudo ср -a /home /mnt/home

Ключ -а (–archive) при  копировании  по возможности  сохраняет структуру и атрибуты исходных файлов. Правда, в  описании указано, что он не обязан сохранять структуру каталогов, но обычно с этим проблем нет. Аналогично можно перенести и  всю файловую  систему, для этого следует в качестве исходного каталога указать корневой, то есть  «/». Но если  на компьютере находится несколько

дисков, может быть полезен параметр -х или -one file-system , который позволяет ограничить работу ср в  пределах одной файловой системы, то есть чтобы она «не перескочила» на другой диск. Но существует один момент, о котором нужно знать. Сегодня есть несколько вариантов  и  версий  команды ср, которые поддерживают свои спецификации. Так, параметр -а относится к версии ср, предлагаемой проектом GNU (http://www.gnu.org/).

ПРИМЕЧАНИЕ

Как я уже упоминал, название проекта GNU происходит от рекурсивного акронима GNU’s Not Unix («GNU не Unix»), его задачей является  разработка свободной UNIX-подобной операционной системы. В настоящее время разработано большое количество утилит, но ядро GNU/Hurd еще не готово (хотя оно разрабатывается

с 1990 г. и уже нормально функционирует). Сейчас GNU с успехом заменяет GNU/Linux, в котором используются утилиты проекта GNU и ядро Linux.

Хотя в  Linux используется как раз вариант ср и потому проблем не возникает, но при работе в других UNIX-подобных системах к ним нужно быть готовым. В принципе, вместо параметра -а можно использовать — dpR.

$ sudo ср -dpR /home /mnt/home

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

В нашем случае команда выглядит следующим образом:

$ sudo (cd /home && tar cf — .) | (cd /mnt/home && tar xpvf -)

Иными словами, мы создали архив tar каталога /home (параметр с, от англ. create «создать»). Но вместо того, чтобы создать файл, передав вывод команды другой копии tar, мы фактически распаковали архив, разместив файлы на своих местах (параметр х — предназначен для распаковки архива (от англ. eXtract — «извлечь»). Параметр -р позволяет установить  нужные права на  файлы, извлекаемые из архива.

При  необходимости  команды можно разделить и  сжать архив  при  помощи программы gunzip (или bzip2). Создадим архив:

$ cd /home; sudo tar czf home.tar.bz .

и  разархивируем:

$ cd /mnt/home; sudo tar xzf home.tar.bz

Теперь, когда файлы находятся на своем месте, смонтируем раздел в /home:

$ sudo mount /dev/sda5 /home

Некоторое время тестируем. Если все работает нормально, добавляем новую точку монтирования   в файл /etc/fstab, чтобы раздел монтировался  автоматически  при

загрузке системы (подробнее о команде mount и  файле fstab поговорим дальше).

И не забываем удалить старые файлы с корневого раздела, ведь они фактически остались на диске. Размонтируем, если нужно, раздел, чтобы случайно не удалить скопированные  файлы:

$ sudo umount /dev/sda5

Теперь удаляем ненужные файлы:

$ sudo rm -Rf /home/*

Диск почищен, монтируем /dev/sda5 и работаем.

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

Источник: Яремчук С. А.  Linux Mint на 100 %. — СПб.: Питер, 2011. — 240 е.: ил. — (Серия «На 100 %»).

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий