![rsync --exclude 和 --exclude-from 不起作用](https://linux22.com/image/1579582/rsync%20--exclude%20%E5%92%8C%20--exclude-from%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我在一个脚本中有一个命令,几年来我经常使用它。去年我没有用过这个脚本,但今天我又运行了它。但我突然无法从 rsync 中排除文件。
我在 Ubuntu 18.04(rsync 版本 3.1.2)上并且运行以下命令:
rsync -exclude-from='sync_exclude.txt' -azvv -e ssh '.' [email protected]:~/wp
该sync_exclude.txt
文件如下所示:
$ cat sync_exclude.txt
.idea
.git
.gitignore
.DS_Store
sync_exclude.txt
ansible/*
.env
但令我惊讶的是,rsync 现在也同步了此排除文件中的所有内容。
我也尝试过其他变化,例如
rsync -exclude=.git/ -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude=".git/" -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude=/.git/ -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude=/.git/* -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude /.git/ -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude /.git/* -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude="/.git/*" -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude "/.git/*" -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude={.git/,"ansible/*"} -azvv -e ssh '.' [email protected]:~/wp
rsync -exclude {.git/,"ansible/*"} -azvv -e ssh '.' [email protected]:~/wp
etc.
但它们都没有排除.git/
或ansible/
文件夹。我也在 MacOS 上尝试过,但在那里遇到了同样的问题。
我正在绞尽脑汁想为什么这一切突然都不再起作用了。
有人能帮助我摆脱痛苦吗?
答案1
这可能只是一个拼写错误,但您必须使用--exclude-from
而不是-exclude-from
(请注意那里的双连字符)。
答案2
我无法添加注释。我认为您应该添加文件 sync_exclude.txt 的相对路径。示例:
rsync --exclude-from='/path-relative/sync_exclude.txt' -azvv -e ssh '.' [email protected]:~/wp
如果这不起作用请尝试这个(添加--relative
选项):
rsync --relative --exclude-from='/path-relative/sync_exclude.txt' -azvv -e ssh '.' [email protected]:~/wp
并尝试将其更改为相对路径:
$ cat sync_exclude.txt
/path-relative/.idea
/path-relative/.git
/path-relative/.gitignore
/path-relative/.DS_Store
/path-relative/sync_exclude.txt
/path-relative/ansible/*
/path-relative/.env