使用 find 从远程同步文件
Rsync files from remote using find
我想将远程文件与本地目录同步。文件必须是从今天早上 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 控制台启动(查找和 rsync 可用)
你的命令有 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.
我想将远程文件与本地目录同步。文件必须是从今天早上 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 控制台启动(查找和 rsync 可用)
你的命令有 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.