Rsync 使用文本文件排除目录不起作用

Rsync 使用文本文件排除目录不起作用

我有以下rsync命令来创建备份,并且我想从网站中排除缓存文件夹:

rsync -aAXv --delete --exclude-from='/usr/local/maxicron/rsync/conf/exclude.txt' /home/admin/domains/server.com/public_html /backup/rsync/local

为了演示,内容exclude.txt只有一行

/home/admin/domains/server.com/public_html/var/cache/*

该命令通过从 public_html 创建备份来工作,但我仍然获得在备份文件中创建的缓存文件夹,网址为/backup/rsync/local。预期结果是文件夹缓存中不应包含任何内容。

我在某处读到该exclude-from命令将使用源备份中的绝对路径。所以我也改变了这个排除行

/home/admin/domains/server.com/public_html/var/cache/*

对此

/var/cache/*

或者

var/cache/*

或者

./var/cache/*

但它们都不起作用,我仍然创建了缓存文件夹。也没有错误。任何想法?

答案1

据男子页面/var/cache/**如果缓存文件夹包含子文件夹,两个星号 ( ) 可能会有所帮助:

a*匹配任何路径组件,但它在斜杠处停止。

用于**匹配任何内容,包括斜杠。

答案2

我不确定为什么文本文件中声明的绝对路径不起作用。因此,我添加了另一个名为--relativersync 的选项,如下所示,并将路径保留为该文本文件内的相对路径:

它的工作原理如下:

rsync -aAXv --relative --delete --exclude-from='/usr/local/maxicron/rsync/conf/exclude.txt' /home/admin/domains/server.com/public_html /backup/rsync/local

相关内容