mv: Каталог не пустой

mv: Каталог не пустой

Я хочу переместить содержимое каталога в другой каталог с теми же папками.

Вот пример:

У меня есть , ./backupв котором есть каталоги baseи test. Теперь я хочу переместить эти каталоги в ./backupArchives.

Я использую это:

mv ./backup/* ./backupArchives

но я получил ошибку

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

Я пробовал использовать --force, но безуспешно. Есть ли способ переместить его, когда папки уже существуют?

Примечание: я хочу просто объединить содержимое, без перезаписи.

решение1

Хотя его man-страница не документирует это, mvоткажется переименовывать каталог в другой каталог, если целевой каталог содержит файлы. Это хорошо в вашем случае, потому что вы, как оказалось, хотитеслияниесодержимое источника в цель, что mvне будет сделано.

Вместо этого используйте rsync -a backup/ backupArchives/. После этого rm -rf backup/*.

Вместо использования rsyncвы также можете использовать классический

(cd backup && tar c .) | (cd backupArchives && tar xf -)

что принесет вам больше очков гика.

решение2

Быстро и грязно, если вы знаете, что делаете:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

решение3

После каталога, который вы перемещаете, вам нужно *(представляет собой любой текст или число). Например:

mv /var/www/* /recovery/wwwrecovery/

Вот и все, если вы перемещаете файлы, то перемещаете так:

mv /var/www/index.php /recovery/index.php

Другой способ — упаковать содержимое этой папки с помощью tar:

tar -cvzpf backup.tar.gz /var/www 

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

Чтобы извлечь файлы в другую папку, используйте

tar -xvzpf /var/www/

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

sudo tar -cvzpf backup.tar.gz /var/www/

решение4

Конечно rsync, работает, но это может сработать и на машине, которая не поддерживает rsync(например, в cPanel, где rsync не установлен по умолчанию).

А как насчет использования:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

Затем удалите backupкаталог, если необходимо.

Примечание 1: Перед выполнением команды вам необходимо cdперейти в каталогbackupcp -R --parents ...

Примечание 2: Дважды проверьте backupArchivesкаталог, если вы получили новые файлы из резервной копии.

Связанный контент