scp-在运行时跳过文件


8

我正在运行scp并从远程服务器复制文件夹,我正在使用-rl运行,所以我看到正在复制的文件,是否可以通过某种方式跳过当前文件?

Answers:


11

不,你不能。但是您可以停下来scp使用rsync。它将仅复制部分副本留下的差异,并且您可以排除任何您不想传输的文件或目录。

rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/

2
是的,这很有用,但是很遗憾,它不能回答所提出的问题。
艾玛莉·威尔逊

8
它完美地回答了这个问题;问题询问是否有可能做某事,并且此答案回答“否”。然后,它提供了一个有用的主题替代方法。
Christopher Shroba '16

1

不可以,不能使用-r或任何其他语法在一个scp命令中执行多个文件传输。

也就是说,这scp也遵循UNIX范式:编写程序,这些程序提供简单,精确的功能,这些功能可以通过有趣的方式链接在一起。这意味着有可能编写一个循环,以交互方式执行命令的单个调用,每个文件一次。这样,您就可以在运行单个命令时对其进行分解。(Ctrl-C)

这样做的代码留给读者练习,但是必须强调在交互式shell中执行此循环的需要。脱离非交互式外壳会终止整个作业。


0

是的你可以!

让我们列出远程目录并分别复制每个文件。然后为每个您不想复制的文件按ctr​​l-c:

OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
  do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"

OLD_IFS在这里用于处理文件中带有空格的文件。


你把它放在哪里?你怎么称呼它?
StatsSorceress
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.