0

好的,所以我的网络服务器具有以下文件结构

/
    /home
           /home/username
                            /home/username/public_html
                            /home/username/mail
                            /home/username/etc
                            ...
           /home/username2
                            /home/username2/public_html
                            ...

因此,我试图找出一种执行 rsync 的 cronjob 的方法,它只会同步我拥有的 600 个帐户的 public_html 文件夹。我想也许用帐户目录下的所有其他子文件夹名称做一个排除列表,但我不确定这是最佳解决方案

有没有办法告诉 rsync 只同步 public_html 文件夹的内容而不必手动输入 600 个帐户?谢谢

PS.:我目前的解决方案是:

rsync –vaRu –exclude ‘mail*’ -exclude 'etc*' home root@xxx.xxx.xxx.xxx:home

使用此解决方案,如果任何文件名与目录名称匹配,它们将不会被复制。

4

1 回答 1

1

您可以使用三个过滤器来做到这一点:

rsync -av --filter="+ /home" \
          --filter="+ /home/*" \ 
          --filter="+ /home/*/public_html" \
          --filter="+ /home/*/public_html/**" \
          --filter="- *" / root@xxx.xxx.xxx.xxx:mirror

在 public_html 之前为树中的所有目录添加“+”过滤器和“**”以包含 public_html 后面的所有内容,这一点很重要。

唯一的缺点是所有主目录都将在目标上创建,但就像空目录一样。

于 2013-10-07T16:36:14.533 回答