Более простым решением, чем повторная -установка ОС с другим расположением разделов или загрузка с загрузочного диска и изменение размеров существующих разделов, может быть использование привязки.
Здесь есть отличный ответ о монтировании привязки:
Скажем ради обсуждения, что ваш сервер Apache занимал все пространство и был внедрен в /var/www
.
Используя связанное монтирование, вы можете создать каталог в /home
, где смонтировано /dev/sda2
, например /home/www
, переместить все из /var/www
в /home/www
, а затем связать /home/www
в /var/www
.
bash-# mkdir /home/www
bash-# mv /var/www/* /home/www/
bash-# chown -R $owner:$group /home/www <-- this step may be optional
bash-# mount --bind /home/www /var/www
Это позволит вам использовать пространство из /dev/sda
, как если бы оно было частью /
, без необходимости изменять размер каких-либо разделов или даже перезагружать сервер.
Это также означает, что вам не нужно настраивать ничего, что ожидает вещей в /var/www
, чтобы искать их в/home/www
(сценариях запуска, приложениях, использующих веб-сервер, заданиях cron и т. д. ).
Только не забудьте добавить в/etc/fstab
:
/home/www /var/www none defaults,bind 0 0
В противном случае он не сохранится после перезагрузки.
Без -t
вы должны сохранить целевой каталог в качестве последнего аргумента опции, отличной от -, для mv
. Это дает нам два варианта :: либо find
поместить имя файла перед целевым каталогом для mv
, либо найти что-то еще, что может сделать то же самое. Итак, либо:
find "$d" -type f -exec mv -i {} "$d" \;
или:
export d; find "$d" -type f -exec sh -c 'exec mv -i "$@" "$d"' sh {} +
В первой команде mv
выполняется для каждого файла. Во втором случае sh -c...
выполняется для пакета файлов, а тот, в свою очередь, выполняет mv
для всего пакета. Второй вариант может быть намного быстрее, но поскольку вы используете интерактивное подтверждение, это не будет иметь большого значения.
это не имеет ничего общего с bash. Это команда mv
.
Вы можете установить gnu mv
, чтобы получить опцию -t
. В качестве альтернативы см. другие ответы, но с этим дополнительным советом.
На странице руководства показаны эти два режима (Я удалил режим -t
)
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
Вы можете заметить, что если не указать-T
(также, я думаю, только в Gnu mv ), и иметь два аргумента, то грамматика неоднозначна. Неоднозначность разрешается путем проверки последнего файла. Если это каталог, то это 2-я форма, иначе это 1-я форма. Грамматика может быть сделана не -двусмысленной, если поставить /
после имени каталога, тем самым форсируя 2-ю форму. Это остановит многие ошибки. К сожалению, единственный способ устранить -неоднозначность первой формы — использовать -T
.