Como remover diretórios da fonte após copiá-los?

Como remover diretórios da fonte após copiá-los?

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

"falha na movimentação entre dispositivos: src para dst; não é possível remover o destino: é um diretório"

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

Responder1

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

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

O e comercial duplo garante que o segundo comando só seja executado se o primeiro terminarcom sucesso-- seria um horror se a cópia falhasse por algum motivo (por exemplo, espaço insuficiente no volume de destino) e a fonte fosse excluída mesmo assim...

Responder2

Na verdade,mvpode "mover" diretórios; mas não pode se mover entre dispositivos ou sistemas de arquivos. Ele roda muito rápido porque tudo o que faz é redefinir o ponteiro do arquivo; o conteúdo em si não é copiado.

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

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

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

informação relacionada