Como copiar de vários diretórios de origem para um único destino?

4

É possível, com o find e o rsync, copiar recursivamente um tipo de arquivo específico, mas ignorar a estrutura do diretório ao gravar no destino? Em outras palavras, copiar todos os arquivos zip de todos os subdiretórios da origem e soltá-los em um único diretório de destino. O destino é uma montagem NTFS na mesma máquina que está sendo compartilhada via Samba. Como os arquivos de origem podem ser alterados ou removidos, gostaria de usar o rsync.

Estou tentando reunir algo nesse sentido, mas não tenho certeza se estou no caminho certo ou se essa é a melhor abordagem:

usr/bin/find /SRC -name "*.zip" -exec usr/bin/rsync -vgoth --delete {} /DEST/ \;

Estou usando caminhos completos porque o comando será eventualmente executado a partir de um script executado via Crontab.

    
por graphics.guy 20.02.2017 / 19:20

1 resposta

1

Não sei se entendi mal sua pergunta, mas a linha que você fornece está funcionando (pelo menos do meu lado com o rsync 3.1.2)!

$ tree
.
├── file1.zip
├── folder1
│   └── file2.zip
└── folder2
    └── subfolder
        └── file3.zip

3 directories, 3 files

$ tree $BACKUP_DESTINATION
0 directories, 0 files

$ find . -iname "*.zip" -exec rsync -vgoth {} ${BACKUP_DESTINATION} \;
[...]

$ tree $BACKUP_DESTINATION
.
├── file1.zip
├── file2.zip
└── file3.zip

0 directories, 3 files

Como você pode ver, os três arquivos zip foram copiados sem o caminho deles, mesmo que estivessem em pastas diferentes.

Você encontrou uma solução melhor? (Talvez na lista de rsync sugerida por Joe)

(Nota: Como BowlOfRed apontou em seu comentário, o --delete está faltando no meu teste (enquanto você o usou em sua sugestão original). Se eu usar essa opção, o rsync está falhando porque reclama --recursive ou --dirs está ausente. Este erro existe apenas da versão 2.6.7, então talvez você estivesse usando uma versão antiga do rsync. Além disso, você não mencionou nada sobre a exclusão de arquivos no destino, portanto, não sei se deseja manter essa opção.)

    
por 20.09.2017 / 22:15

Tags