scp-运行时跳过文件

scp-运行时跳过文件

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

答案1

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

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

答案2

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

也就是说,scp也遵循 UNIX 范式:编写提供简单、精确功能的程序,这些程序可以以有趣的方式链接在一起。这意味着可以编写一个循环,互动地施行个人命令调用,每个文件一次。然后,您将能够在运行单个命令时中断它们。(Ctrl-C)

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

答案3

是的你可以!

让我们列出远程目录并分别复制每个文件。然后对每个您不想复制的文件按 ctrl-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 用于处理带有空格的文件。

相关内容