Используйте find с scp или rsync для отправки найденных файлов

Используйте find с scp или rsync для отправки найденных файлов

Я пытаюсь запустить простую команду, которая ищет определенный тип файла и после его нахождения копирует этот файл и структуру каталогов на удаленный сервер.

Например:

find Source/ -name *.CR2 | xargs -d '\n' cp --parents -t /STORAGE/location/ 

В этом случае он берет найденный файл и копирует его в отдельный каталог со структурой родительских папок. Я хотел бы сделать то же самое с помощью rsync или scp.

Я попробовал внести некоторые изменения в код ниже, но безуспешно.

find /src/dir/ -name *.CR2 -printf %P\\0 \ | rsync -av -e ssh --files-from=- --from0 /src/dir/ remote@server:/Storage/

Любая помощь будет оценена.

Я сортирую семейные фотографии за несколько лет, и вместо того, чтобы искать их в одном каталоге на моем массиве zfs и переписывать их в другое место на том же массиве (что съедает время), я хочу найти их и отправить на отдельную машину, где они будут отсортированы по типу, пройдены fdupes, а затем пройдены phockupдля сортировки по дате. Я делаю это так на случай, если я облажаюсь, у меня будут файлы orig в целости и сохранности.

Редактировать: Я хотел бы поблагодарить людей, которые ответили на мой вопрос. К счастью, я нашел решение до того, как вы ответили, к сожалению, я не думал о том, насколько медленным будет решение. Поэтому я решил просто сделать это так, как я делал это раньше.

Это был код, который работал у меня. Хотя для корректной работы требовались некоторые передачи ssh-ключа, чтобы мне не пришлось вводить пароль для каждого файла.

find Sorted/ -name *.JPG -exec rsync -a -e ssh --relative '{}' usr@remote:/1/2/3/ ';'

Я попробую воспользоваться другими упомянутыми рекомендациями и посмотреть, будут ли они быстрее, но на данный момент я просто создал скрипт оболочки, работающий в фоновом режиме.

Еще раз спасибо!

решение1

find Source/ -type f -name '*.CR2' -print0 |
    rsync --dry-run -av --files-from - --from0 . remote@server:/Storage/

Удалите --dry-run, когда будете довольны тем, что планируете сделать.

решение2

Ниже приведена команда, которую мы можем использовать

 find  path -type f -iname "filename" -exec scp {} destinationhost:/var/tmp/ \;

Связанный контент