Как изменить точки монтирования

Используйте цикл оболочки и ex !

{ for i in {1..50}; do printf %s\\n '0/old/s//new/'; done; echo x;} | ex file.txt

Да, это немного глупо.

;)

Примечание. Это может привести к сбою, если в файле менее 50 экземпляров старого . (Я не тестировал его.) Если это так, он оставит файл без изменений.


А еще лучше использовать Vim.

vim file.txt
qqgg/old<CR>:s/old/new/<CR>q49@q
:x

Объяснение:

q                                # Start recording macro
 q                               # Into register q
  gg                             # Go to start of file
    /old<CR>                     # Go to first instance of 'old'
            :s/old/new/<CR>      # Change it to 'new'
                           q     # Stop recording
                            49@q # Replay macro 49 times

:x  # Save and exit
7
12.08.2017, 13:35
3 ответа

Поскольку у вас достаточно места в / home , переместите все файлы из / srv в / home , затем (необязательно) переместите файлы, которые находился в / home в корневом разделе.

Самое простое решение, если вы не возражаете против простоя в несколько минут, - это переместить / srv в больший раздел и создать символьную ссылку на него:

mv /srv /home
ln -s /home/srv /

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

mv /srv home
mkdir /srv
mount --move /home /srv
mv /srv/acme … /home/
mv /srv/srv/* /srv
rmdir /srv/srv

Наконец (если вы не используете метод символической ссылки), отредактируйте / etc / fstab , чтобы изменить точку монтирования: в строке, которая начинается с / dev / sda9 / home , замените / home на / srv .

10
29.04.2021, 01:00

Прежде чем что-то делать, вам нужно найти место для хранения 180 мегабайт данных, которые сейчас занимает /home. Я бы рекомендовал переразметить текущий /dev/sda9, скажем, на два гига для /home и 42 для /srv.

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

У вас есть приличное количество места в /var, поэтому мы будем использовать его в качестве временного места хранения: mkdir /var/tmp/oldhome

cd /home

`tar -cvf - . / | ( cd /var/tmp/oldhome && tar -xvf - . )

Теперь у нас есть резервная копия /home, пока мы переразбиваем /dev/sda9 на 2 гига для /dev/sda9 и 42 гига для /dev/sda10

После завершения переразметки и создания новых файловых систем (я буду считать, что вы знаете, как это делается) вам нужно отредактировать /etc/fstab.

Где-то там вы увидите строку, в которой говорится что-то вроде

/dev/sda9 /home ext3 defaults 0 2

Предполагая, что вы сделали /dev/sda9 меньшим из двух разделов, вы можете оставить эту строку без изменений; вам просто нужно добавить

/dev/sda10 /srv ext3 defaults 0 2

прямо под ней.

После добавления этих строк просто введите

mount /home ; mount /srv

и проверьте с помощью df -h, что оба раздела смонтированы.

Затем замените данные из /home:

cd /var/tmp/oldhome

tar -cvf - ./ | ( cd /home && tar -xvf - )

Перезагрузите систему в многопользовательском режиме и все должно заработать.

2
29.04.2021, 01:00

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

Прочитайте о --bind в man mount. Это сводится к чему-то вроде mount --bind /some/spare/dir /busy/dir/mountpoint. Это работает в любом современном Linux.

Предположим, что у вас есть /srv/some/stuff.

  • mkdir /home/offload/some/stuff - это на разделе со свободным пространством 44G
  • mv /srv/some/stuff /srv/some/previous-stuff - временно, освободить имя
  • mount --bind /home/offload/some/stuff /srv/some/stuff - теперь some/stuff находится на другом разделе!
  • mv /srv/some/previous-stuff/* /srv/some/stuff - верните все под оригинальное имя, освободите место на /srv.
2
29.04.2021, 01:00

Теги

Похожие вопросы