Quero mover algum subconjunto de arquivos de dirA para dirB (digamos, arquivos com "blah" no nome do arquivo), mas quero que todos os diretórios aninhados sejam os mesmos no novo local. Como eu posso fazer isso?
directory-structure
file-copy
cstack
fonte
fonte
Respostas:
A mágica das
rsync
regras de filtro:Consulte a
rsync
pá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"fonte
Se você precisar copiar esses arquivos, o cp fará:
A opção
--parents
preserva subdiretórios - cria o caminho completo do diretório para o destino.fonte
Isso funcionou para mim:
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/
O
-e
switch define orsync
protocolo 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!
fonte