将最近一天创建的多个文件从服务器发送到本地失败

Scp multiple files created in last one day from server to local fails

我想获取过去 1 天内生成的多个文件,从服务器到本地。我正在使用以下命令 "No such file or directory"。

find username@server.xyz.com:/path-from-which-files-need-to-be-copied/ -type f -ctime -1 | xargs -ILIST scp LIST /Users/abcUser/Documents/test/

错误 查找:username@server.xyz.com:/path-from-which-files-need-to-be-copied/: No such file or directory

PS:我可以从这个位置访问这个位置和 scp 以获取具有文件名的单个文件。

find只能找到本地文件。所以 运行 find 在远程服务器上,一些东西:

ssh username@server.xyz.com find /path-from-which-files-need-to-be-copied/ -type f -ctime -1 |
xargs -ILIST scp username@server.xyz.com:LIST /Users/abcUser/Documents/test/

请注意,xargs 默认情况下会以自己的方式解析 \ 和引号。传递 find 结果的最佳方法是使用零终止流:

ssh username@server.xyz.com find /path-from-which-files-need-to-be-copied/ -type f -ctime -1 -print0 |
xargs -0 -ILIST scp username@server.xyz.com:LIST /Users/abcUser/Documents/test/   

但是 xargs 将为每个文件调用单独的 scp 会话,这会非常慢。因此,通过 运行 为所有文件设置一个 scp 来优化它,我认为你可以这样做:

ssh username@server.xyz.com find /path-from-which-files-need-to-be-copied/ -type f -ctime -1 -printf 'username@server.xyz.com:%p\0' |
xargs -0 sh -c 'scp "$@" "[=12=]"' /Users/abcUser/Documents/test/