来自远程的Rsync文件使用find

时间:2018-05-16 13:54:16

标签: linux bash ssh find rsync

我想将远程文件与本地目录同步。文件必须从今天凌晨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 :(得分:1)

您的命令有2个问题 1)经常询问ssh密码,因此将2个单独的命令列入并复制 2)列表中的项目包含/ home / user / test,rsync将尝试将其复制到/ home / user / test / home / user / test,抛出错误。需要文件basename。

# 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。