rsync --exclude 和 --exclude-from 不起作用

rsync --exclude 和 --exclude-from 不起作用

我在一个脚本中有一个命令,几年来我经常使用它。去年我没有用过这个脚本,但今天我又运行了它。但我突然无法从 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

相关内容