Ferramentas de cópia de arquivos, como o rsync, não o ajudarão facilmente, já que você não deseja copiar nenhum arquivo.
A abordagem direta de listar os arquivos no servidor A e apagar esses arquivos no servidor B é boa na maioria das circunstâncias. É mais fácil lidar com nomes de arquivos arbitrários se os comandos ' find
e xargs
' dos seus servidores entenderem os separadores nulos (Linux, * BSD, Cygwin). De A:
cd ./delete
find . ! -type d -print0 | ssh B 'cd /path/to/stuff && xargs -0 rm -f'
Isso pode deixar alguns diretórios vazios para trás. Você pode excluir todos os diretórios vazios (mesmo os que estavam vazios antes) com
ssh B 'cd /path/to/stuff && find . -depth -type d -exec rmdir {} + 2>/dev/null'
Se você quiser apenas remover os diretórios que existiam no lado da origem, será necessário usar a lista novamente:
find . -depth -type d -print0 | ssh B 'cd /path/to/stuff && xargs -0 rmdir'
Se houver árvores de diretórios em A que contenham muitos arquivos e não existam em B, isso transfere toda a lista de arquivos para apagar onde um rm -rf
em B bem escolhido faria o mesmo trabalho localmente B, mas economizaria muita largura de banda na transferência. Esse é o tipo de situação em que uma ferramenta de sincronização de arquivos se sairia bem. Você pode executar rsync -nv
e tentar analisar a saída, mas não é fácil criar algo confiável sobre isso.