目录结构如下:
/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
应该可以解决问题。当它尝试覆盖该目录时,您将收到“权限被拒绝”错误。