Не знаю, правильно ли я понял ваш вопрос, но предоставленная вами строка работает (по крайней мере на моей стороне с 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
Как видите, 3 zip-файла были скопированы без указания пути, хотя они находились в разных папках.
Вы нашли лучшее решение? (Возможно, в списке rsync, как предложил Джо)
(Примечание :Как отметил BowlOfRed в своем комментарии, --delete
отсутствует в моем тесте (, тогда как вы использовали его в своем первоначальном предложении ). Если я использую эту опцию, rsync дает сбой, потому что он жалуется --recursive
или --dirs
отсутствует. Эта ошибка существует только с версии 2.6.7, поэтому, возможно, вы использовали старую версию rsync. Также вы ничего не упомянули об удалении файлов в месте назначения, поэтому я не знаю, хотите ли вы сохранить эту опцию.)