[原]使用rsync命令同步数据
考虑到服务器数据的安全,我考虑增加一台备份服务器,通过数据同步,达到较好的冗余。
linux下有非常好的一个命令
rsync可以实现差异备份,下面就说说它的用法:
▲合适系统:红旗DC 4.1 or 5.0或其他linux、FreeBSD系统
▲测试环境:红旗DC 5.0
一、通过rsh或ssh命令
在没有建立
rsync服务器的情况下,我们可以利用rsync命令直接进行快速的差异备份:
Code:
命令格式:
#
rsync [option] 源路径 目标路径
其中:
[option]:
a:使用archive模式,等于-rlptgoD,即保持原有的文件权限
z:表示传输时压缩数据
v:显示到屏幕中
e:使用远程shell程序(可以使用rsh或ssh)
--delete:精确保存副本,源主机删除的文件,目标主机也会同步删除
--include=PATTERN:不排除符合PATTERN的文件或目录
--exclude=PATTERN:排除所有符合PATTERN的文件或目录
--password-file:指定用于
rsync服务器的用户验证密码
源路径和目标路径可以使用如下格式:
rsync://[USER@]Host[:Port]/Path 服务器路径
[USER@]Host::Path
rsync服务器的另一种表示形式
[USER@]Host:Path 远程路径
LocalPath 本地路径
※需要注意的是,来源或目的路径最少要有一个是本地路径,如果忽略本地路径,则只会列出远端的文件列表。
例子:
Code:
#
rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/
把源路径中远端test机器上的/home/ftp/pub/目录中的内容,通过
rsync同步到本地的/home/ftp/pub/目录下。
◎小心源路径结尾时候的/号,后缀/通知
rsync复制该目录的内容,但不复制目录本身。例如:
Code:
#
rsync -ave ssh test:/home/ftp/pub /home/ftp/
则会把pub目录整个同步到本地/home/ftp/路径中
Code:
#
rsync -azv --delete rsync://linuxing@192.168.1.100/blog /var/www/html/
通过linuxing登陆到192.168.1.100中,同步
rsync服务器的blog项到本地的/var/www/html/,并删除本地上源路径中不存在的文件或目录。
※千万要注意--delete参数,在使用此参数的时候,建议用绝对路径指定本地目录,防止清空当前目录。
二、建立
rsync服务器
当服务器没有开通ssh,或备份方没有ssh权限的时候,我们可以通过建立
rsync服务器,进行匿名的数据同步。
要使用
rsync服务,需要建立服务端和客户端:
1、服务端
主配置文件:
Code:
#vi /etc/
rsyncd.conf
log file = /var/log/
rsyncd.log
pid file = /var/run/
rsyncd.pid
lock file = /var/run/
rsync.lock
[test] #
rsync区段的设定名称
path = /var/www/html/test #需要同步的数据存放路径
comment = test folder #注释
uid = apache #采用什么身份进行文件读取
gid = apache #同上,必须是有读取path权限的用户、组
ignore errors #忽略错误
read only = yes #只读
list = no #不能列表
auth users = linuxing #连接
rsync服务的账号
secrets file = /etc/
rsyncd.secrets #指定存放账号密码的位置
账号密码文件:
Code:
#vi /etc/
rsyncd.secrets
#格式:账号:密码 (每行一组,账号和密码用:号分开)
linuxing:backup
保存后,需要保证用户是root,权限是600
Code:
#chown root:root /etc/
rsyncd.secrets
#chmod 600 /etc/
rsyncd.secrets
启动服务:
#
rsync --daemon
保证开机自动启动:
修改/etc/xinetd.d/
rsync文件,把其中的disable=yes改为disable=no
Code:
#sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/
rsync
#service xinetd.d restart
2、客户端
使用用法一中涉及到
rsync://的方法即可。
如果
rsync服务器需要密码验证,可以增加--password-file参数:
Code:
#
rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
#vi /etc/test
#指定访问密码
bakcup
#chmod 600 /etc/test
3、定时
另外,由于
rsync客户端没有定时功能,我们可以通过在crontab中增加计划任务实现定时的同步,如:(不要使用-v参数,防止刷屏)
Code:
#crontab -e
0 22 * * 1-5 /usr/bin/
rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
#指定星期一到五,每晚十点整进行同步
三、总结
使用
rsync的优点:可通过ssh进行网络加密传输,也可以利用ssh客户端密钥建立信任关系。当在两台计算机之间保持大型、复杂目录结构的同步时候,比tar或wget等方式都要快。而且可以做到精确同步。
四、附录
如果是通过编译安装的
rsync(如FreeBSD),路径有点不同:
服务器的配置文件在:/usr/local/etc/
rsyncd.conf
启动文件:/usr/local/etc/rc.d/
rsyncd.sh
命令文件:/usr/local/bin/
rsync
系统启动托管:/etc/rc.conf(增加
rsyncd_enable="YES")
五、参考文章
http://rsync.samba.org/
帮助文件:man
rsync 或 man rsyncd.conf
※2005-11-20 第一次编写
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/76/showart_150064.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。