用于复制特定子文件夹的Rsync语法

时间:2013-10-07 15:04:17

标签: linux backup rsync

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

/
    /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

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

1 个答案:

答案 0 :(得分:0)

您可以使用三个过滤器执行此操作:

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后面的所有内容非常重要。

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