SCP 递归文件传输顺序

SCP 递归文件传输顺序

想知道在使用传输文件时是否可以指定排序顺序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递归下载。

答案3

如果这对某人有帮助,我在这里提供了一个简单的解决方案:

https://stackoverflow.com/questions/23067175

仍在等待更聪明的方法来实现它!

相关内容