Rsync файлы из удаленного с помощью поиска - PullRequest
0 голосов
/ 16 мая 2018

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

ssh user@192.168.1.100 'find /home/user/test/ -mtime -1 -type f' | rsync --archive --verbose -zz --human-readable --rsh='ssh user@192.168.1.100:/home/user/test/' '/e/rc/'

/ e / rc / - это мой локальный каталог Windows - скрипт запускается из консоли git bash (команды find и rsync доступны)

1 Ответ

0 голосов
/ 17 мая 2018

У ваших команд есть 2 проблемы
1) Постоянно спрашивается пароль ssh, поэтому делаются 2 отдельные команды для вывода и копирования.
2) Элементы в списке содержат / home / user / test, который rsync попытается скопировать в / home / user / test / home / user / test, выдав ошибку. Необходимо указать базовое имя файла.

# we need to get file basename since rsync+ssh will copy with respect to user home
files=$(ssh user@192.168.0.10 "find /home/user/test/ -mtime -1 -type f -exec basename {} ';'")
# do the actual copy reading list of files-from stdout
echo "$files" | rsync -avz --files-from=- user@192.168.0.10:test/ '/e/rc/'

Я не использую git bash, поэтому, если выражение $(...) не работает, попробуйте использовать обратные метки или использовать полноценный bash.

...