Я хочу переместить содержимое каталога в другой каталог с теми же папками.
Вот пример:
У меня есть , ./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
перейти в каталогbackup
cp -R --parents ...
Примечание 2: Дважды проверьте backupArchives
каталог, если вы получили новые файлы из резервной копии.