将最近一天创建的多个文件从服务器发送到本地失败
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/
我想获取过去 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/