Quero mover o conteúdo de um diretório dentro de outro diretório com as mesmas pastas.
Aqui está um exemplo:
Eu tenho ./backup
que tem os diretórios base
e test
. Agora, quero mover esses diretórios para ./backupArchives
.
Eu uso isso:
mv ./backup/* ./backupArchives
mas eu recebi o erro
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Eu tentei usar --force
, mas sem sorte. Existe uma maneira de movê-lo quando já existem pastas?
Nota: eu só quero mesclar o conteúdo, não há substituição.
Responder1
Embora sua página de manual não o documente, mv
ele se recusará a renomear um diretório para outro diretório se o diretório de destino contiver arquivos. Isso é uma coisa boa no seu caso, porque você quermesclaro conteúdo da fonte no destino, o que mv
não funcionará.
Use rsync -a backup/ backupArchives/
em vez disso. Depois disso rm -rf backup/*
.
Em vez de usar rsync
, você também pode fazer o clássico
(cd backup && tar c .) | (cd backupArchives && tar xf -)
o que lhe dá mais pontos geek.
Responder2
Rápido e sujo, se você sabe o que está fazendo:
cp -r ./backup/* ./backupArchives && rm -R ./backup/*
Responder3
Após o diretório que você precisa mover, você precisa *
(representa qualquer texto ou número). Por exemplo:
mv /var/www/* /recovery/wwwrecovery/
isso é tudo, se você estiver movendo arquivos, então você move como:
mv /var/www/index.php /recovery/index.php
Outra maneira é compactar o conteúdo dessa pasta usando tar:
tar -cvzpf backup.tar.gz /var/www
Em seguida, mova-o para qualquer outro arquivo. Também recomendo esta etapa porque o tar o comprime e diminui o tamanho.
Para extrair os arquivos para outra pasta use
tar -xvzpf /var/www/
Se você precisar copiar para um local que não é de sua propriedade, certifique-se de anexar seu comando com o sudo
comando após qualquer opção que você decidir usar.
sudo tar -cvzpf backup.tar.gz /var/www/
Responder4
Claro rsync
que funciona, mas também pode funcionar para máquinas que não suportam rsync
(ou seja, no cpanel, cujo rsync não é instalado por padrão).
Que tal usar:
cd /path/to/backup/ && cp -R --parents ./* ../backupArchives
Em seguida, remova o backup
diretório, se necessário
Nota1: Você precisa cd
acessar o backup
diretório antes de executar ocp -R --parents ...
Nota2: Verifique novamente o backupArchives
diretório se você obteve os novos arquivos do backup.