scp -r…但是省略(排除)指定的子目录


29

这是目录结构:

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

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

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

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


3
最初的动机是子目录“ / a / c /”非常大(千兆字节),因此,将其保留下来会将副本从几分钟减少到几秒钟。
Russian_spy

Answers:


28

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

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

5

我认为这可能是正确的方法,因此您仍在使用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 .

也可以尝试-rz-e "ssh -i private.pem" -rz 'users@server:/full/path/'
mbrownnyc 2013年

1

您可以按照以下示例使用扩展的globbing:

#Enable extglob
shopt -s extglob

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

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.