想知道在使用传输文件时是否可以指定排序顺序scp
。
例如:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
由于这可能与功能有关scp
,是否有某种方法可以在源(服务器)端配置 ssh 以便传输文件,例如按文件名的升序?
答案1
我应该解决 和tar
的管道透明度问题ssh
。下面是一个例子,远程 PC 名为bar
。测试前,我/tmp/foo
通过执行在 中创建了三个空文件ssh bar 'mkdir /tmp/foo ; touch /tmp/foo/{a,b,c}'
。
$ ssh bar 'cd /tmp/foo ; ls | sort -r | tar -cT -' | tar -xv
c
b
a
$ ls -l a b c
-rw-r--r-- 1 dnet dnet 0 nov 29 17:07 a
-rw-r--r-- 1 dnet dnet 0 nov 29 17:07 b
-rw-r--r-- 1 dnet dnet 0 nov 29 17:07 c
标志-T
使其tar
从下一个参数读取要打包的文件-
名,和表示标准输入。现在您只需将文件的名称通过管道传输到其中,它可以来自ls
(如示例中所示)或find
用于更棘手的任务。使用此设置,您可以使用来sort
指示文件将通过 SSH 传输的确切顺序(在本例中,-r
按字母顺序反向排序的文件)。-v
仅添加到最后的解包中tar
,以便顺序可见。
答案2
可以使用以下方法实现按字母顺序的文件传输rsync
:
rsync -P -e ssh -r user@remote_host:/some_path local_path
P
允许部分下载,e
设置SSH协议并r
递归下载。