我正在运行 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 用于处理带有空格的文件。