mv: Diretório não vazio

mv: Diretório não vazio

Quero mover o conteúdo de um diretório dentro de outro diretório com as mesmas pastas.

Aqui está um exemplo:

Eu tenho ./backupque tem os diretórios basee 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, mvele 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 mvnã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 sudocomando após qualquer opção que você decidir usar.

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

Responder4

Claro rsyncque 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 backupdiretório, se necessário

Nota1: Você precisa cdacessar o backupdiretório antes de executar ocp -R --parents ...

Nota2: Verifique novamente o backupArchivesdiretório se você obteve os novos arquivos do backup.

informação relacionada