如何按照 scp -rp 复制文件的顺序列出文件?
我需要知道这一点,因为有时我需要 ctrl-C 一个 scp,然后想要复制剩余的文件。
答案1
虽然我会在这里使用rsync
,但这是对问题的直接回答的尝试。
至少在 Debian GNU/Linux amd64 上使用 OpenSSH 7.4p1,并且在远程复制时(即源或目标位于远程主机上),它看起来像scp -r
按照从目录读取文件的顺序处理文件。
这与您得到的顺序相同:
printf '%s\n' **/*(D.oN)
例如zsh
。 globoN
限定符用于禁用排序。也可以看看tree -U
:
$ tree -U 1
1
├── 2
│ ├── 4
│ │ └── 2-4
│ ├── 2
│ │ └── 2-2
│ ├── 3
│ │ └── 2-3
│ └── 1
│ └── 2-1
├── 3
│ ├── 4
│ │ └── 3-4
│ ├── 2
│ │ └── 3-2
│ ├── 3
│ │ └── 3-3
│ └── 1
│ └── 3-1
└── 1
├── 4
│ └── 1-4
├── 2
│ └── 1-2
├── 3
│ └── 1-3
└── 1
└── 1-1
$ print -rl 1/**/*(D.oN)
1/2/4/2-4
1/2/2/2-2
1/2/3/2-3
1/2/1/2-1
1/3/4/3-4
1/3/2/3-2
1/3/3/3-3
1/3/1/3-1
1/1/4/1-4
1/1/2/1-2
1/1/3/1-3
1/1/1/1-1
$ scp -r localhost:1 2
2-4 100% 5 11.6KB/s 00:00
2-2 100% 5 38.9KB/s 00:00
2-3 100% 5 19.6KB/s 00:00
2-1 100% 5 19.6KB/s 00:00
3-4 100% 5 32.1KB/s 00:00
3-2 100% 5 38.8KB/s 00:00
3-3 100% 5 37.5KB/s 00:00
3-1 100% 5 28.4KB/s 00:00
1-4 100% 5 23.8KB/s 00:00
1-2 100% 5 39.1KB/s 00:00
1-3 100% 5 42.8KB/s 00:00
1-1 100% 5 40.9KB/s 00:00
答案2
嗯,显而易见的事情就是使用,-v
这样你就可以在复制它们时看到它们的名字:
scp -vrp from/here to/there
然而,摆弄文件名并不是最好的方法。如果您发现自己需要经常这样做,那么您应该改用rsync
。由于它有一个-u
选项(仅当本地文件比远程文件新时才复制),因此它将跳过您已复制的任何文件,并且如果它在源和目标上找到相同的文件,则只会将差异复制到使远程文件与本地文件相同。
答案3
GNU ls 有--sort=none
(-U
缩写形式)选项(“不排序;按目录顺序列出条目”)。