想知道使用传输文件时是否可以指定排序顺序scp
。
例如:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
由于这可能与scp
功能有关,是否有某种方法可以在源(服务器)端配置ssh,以便例如以文件名的升序传输文件?
想知道使用传输文件时是否可以指定排序顺序scp
。
例如:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
由于这可能与scp
功能有关,是否有某种方法可以在源(服务器)端配置ssh,以便例如以文件名的升序传输文件?
Answers:
我应该解决的问题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
仅添加到最终的unpacking中tar
,以便可见订单。
sort
中的结果是否会以bar
某种方式完成此任务?
scp
-都为每个文件发送元数据和内容,它们只是使用了不同的“协议”。我想您可以遍历结果,但是随后您应该注意文件名中带有空格的文件。