Archive for 二月, 2012

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

注意两点:
1.以上列表会延伸至子目录。
2.以上单条命令或是文件包含,都支持通配符。

==================================

另外对于软硬链接的文件或目录,在使用rsync命令的时候一定要加上大写L参数,才能对相应目录进行备份。否则只是备份了一个指针,没有内容。命令如是:

rsync -azPL --delete bak@www.baidu.com::htdocs /opt/bakroot/rsyncwww --password-file=/etc/rsync.passwd