我正在运行scp和从远程服务器复制文件夹,我正在运行与-rl,所以我看到正在复制的文件,是否有可能跳过当前文件的某种方式?
不,你不能。 但是,您可以停止scp ,而是使用rsync 。 它将仅复制从部分副本中留下的差异,并且可以排除不希望传输的任何文件或目录。
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
不,不是用-r或其他在一个scp命令中执行多个文件传输的语法。
也就是说, scp也遵循UNIX范例:编写提供简单,精确function的程序,这些程序可以用有趣的方式链接在一起。 这意味着可以编写一个交互式地执行命令的单个调用的循环,每个文件一个循环。 然后你就可以在运行的时候跳出个别的命令。 (CTRL-C)
这个代码留给读者作为练习,但是必须强调在交互式shell中执行这个循环的必要性。 打破非交互式shell会终止整个工作。
是的你可以!
让我们列出远程目录并分别复制每个文件。 然后按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在这里处理文件中的空格。