scp -r ...但忽略(排除)指定的子目录

scp -r ...但忽略(排除)指定的子目录

目录结构如下:

/a/
/a/b/
/a/c/

我想复制所有内容,除了 /a/c/ 子目录。

scp -rp myserver:/a .      # this will copy everything

问:如何在 scp 命令中指定要省略的目录?

答案1

我认为你不能,但是你可以使用 rsync 吗?像这样:

rsync -a --exclude=a/c myserver:/a .

答案2

我认为这可能是正确的方法,所以您仍在使用 SSH,我还没有找到使用 scp 执行此操作的方法 - 但使用 ssh 上的 rsync 可能会解决这个问题。

rsync -e 'ssh -ax' -av --exclude /a/c myserver:/a .

如果您使用 -n 开关,那么它将创建该过程的试运行:

 rsync -e 'ssh -ax' -av --exclude /a/c -n myserver:/a .

答案3

您可以使用扩展的通配符,如下例所示:

#Enable extglob
shopt -s extglob

cp -rv !(./excludeme/*.jpg) /var/destination

答案4

这不是完美的方法,但将要排除的子目录设置为只读。chmod -R 444 /a/c应该可以解决问题。当它尝试覆盖该目录时,您将收到“权限被拒绝”错误。

相关内容