Como remover diretórios da fonte depois de copiá-los?

1

Eu só quero mover dirs. Olhei sucessivamente para mv, cp e rsync, pois cada ferramenta, por sua vez, não parecia ter a opção de remover diretórios da origem depois de copiá-los. Por exemplo, mv precisa de arquivos, não de dirs, quando src e dst estão em dispositivos diferentes:

"inter-device move failed: src to dst; unable to remove target: Is a directory"

Talvez a maneira mais simples de fazer isso seja usando um cmd de exclusão adicional, embora eu prefira não usá-lo, já que isso aumenta o risco de perda de dados.

    
por user55542 01.07.2012 / 21:53

2 respostas

5

Como Bob disse. Infelizmente eu não posso (ainda) comentar, então eu tenho que colocar meus ajustes aqui. Sugiro usar uma versão ligeiramente modificada do comando Bobs:

cp -rp source-dir target-dir && rm -r source-dir;

O duplo-e-comercial garante que o segundo comando seja executado somente se o primeiro terminar com sucesso - seria um horror se a cópia falhasse por algum motivo (por exemplo, não haver espaço suficiente no volume alvo) , e a fonte seria deletada mesmo assim ...

    
por 02.07.2012 / 01:06
1

Na verdade, mv pode "mover" diretórios; mas não pode se mover entre dispositivos ou sistemas de arquivos. Ele roda muito rápido porque tudo o que ele faz é redefinir o ponteiro do arquivo; os próprios contendores não são copiados.

Então, você precisa de dois comandos (copie e remova). No meu sistema Solaris, eu movo diretórios com estes dois comandos:

cp -rp source-dir target-dir; rm -r source-dir;

Veja as man pages para certificar-se de usar a sintaxe correta para o seu ambiente e para o tratamento de quaisquer links simbólicos que possam existir.

    
por 01.07.2012 / 22:30