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.)