Como copiar um subconjunto de arquivos de um diretório, preservando a estrutura de pastas?


Respostas:


9

A mágica das rsyncregras de filtro:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

Consulte a rsyncpágina de manual para obter detalhes sobre regras de filtro, mas aqui está a versão resumida para essa necessidade específica.

--filter="+ */" significa "incluir tudo o que é um diretório"

--filter="-! *blah* significa "excluir tudo que NÃO inclui blá no nome do arquivo"


3

Se você precisar copiar esses arquivos, o cp fará:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

A opção --parentspreserva subdiretórios - cria o caminho completo do diretório para o destino.


a sintaxe aqui é muito mais clara que o rsync
Matěj Šmíd

0

Isso funcionou para mim:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" uid@555.55.555.55:/source/directory/ /destination/directory/

O -eswitch define o rsyncprotocolo de transferência com porta como -p 22. Além disso, as /barras finais são importantes para que o programa saiba que está lidando com diretórios.

Obrigado @pdo pelas horas extras no meu dia de trabalho!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.