rsync对隐藏文件和指定文件的排除处理
星期一, 二月 6th, 2012在进行异地镜像时,rsync对隐藏文件的处理往往会出现一些问题,隐藏文件一般是系统文件,所以会牵扯到linux权限问题,从而导致rsync同步出错。
解决这个问题的办法是,在客户端通过exclude参数对指定文件或文件夹进行排除。
例如要排除备份目录下的以.开头的文件,可以用这样的命令:
rsync -azP --delete bak@www.baidu.com::htdocs --exclude=.[a-z0-9]* /opt/bakroot/rsyncwww --password-file=/etc/rsync.passwd
排除备份目录下的abc文件夹:
rsync -azP --delete bak@www.baidu.com::htdocs --exclude=abc /opt/bakroot/rsyncwww --password-file=/etc/rsync.passwd
也可以同时排除多个文件夹:
rsync -azP --delete bak@www.baidu.com::htdocs --exclude=abc --exclude=cba /opt/bakroot/rsyncwww --password-file=/etc/rsync.passwd
也可以用 –exclude-from 来指定用来排除的文件列表:
rsync -azP --delete bak@www.baidu.com::htdocs --exclude-from=exclude.list /opt/bakroot/rsyncwww --password-file=/etc/rsync.passwd
此时的exclude.list文件的内容为:
abc
[0-9]*
abc/.[a-z0-9]*
.svn
[0-9]*
abc/.[a-z0-9]*
.svn
注意两点:
1.以上列表会延伸至子目录。
2.以上单条命令或是文件包含,都支持通配符。
==================================
另外对于软硬链接的文件或目录,在使用rsync命令的时候一定要加上大写L参数,才能对相应目录进行备份。否则只是备份了一个指针,没有内容。命令如是:
rsync -azPL --delete bak@www.baidu.com::htdocs /opt/bakroot/rsyncwww --password-file=/etc/rsync.passwd
