您的位置:首页 > 其它

用RSYNC实现数据的备份和同步

2006-11-30 10:14 465 查看
用RSYNC实现数据的备份和同步
作者:cqj1314 提交日期:2006-3-28 17:18:00
用RSYNC实现数据的备份和同步

RSYNC的特性:

1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

RSYNC的安装:
./configure && make && make install

RSYNC服务器端配置:(IP:192.168.100.33)

1、 建立备份的目录。
2、 建立配置文件/etc/rsyncd.conf,配置如下:

[BBS_ZT_241] #指定认证的备份模块名
 path = /usr/local/apache2/ #本地存放备份的目录
 auth users = apache #认证的用户名,需在两端的/etc/rsyncd.secrets文件中添加
 uid = apache #备份以apache用户和组进行
gid = apache
hosts allow = 192.168.100.90 #哪些电脑可以访问rsync服务
hosts deny = 192.168.100.0/24 #哪些电脑不可以访问rsync服务
 use chroot = no #不使用chroot
secrets file = /etc/rsyncd.secrets #认证文件路径
ignore errors # 可以忽略一些无关的IO错误
 read only = no
list = no #不允许列文件

如果同时还需要备份其它目录的话,可以直接在配置文件的后面继续增加配置内容,这样就可以同时备份多个目录了。
同时存放备份的目录必须从属密码文件的用户组chown apache:apache /usr/local/apache2
3、 建立认证文件

Vi /etc/rsyncd.secrets 然后在里面添加用户和密码apache:apache,同时要将rsyncd.secrets文件的属性设为ROOT拥有,权限设为600(否则无法备份成功)
chown root.root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
服务器端设置完毕,启动:service xinetd restart
4、 开机自动启动

加入inetd.conf,编辑vi /etc/services,加入
rsync 873/tcp # rsync
rsync 873/udp #rsync
修改了services文件的好处就在于系统知道873端口对应的服务名为rsync

建立一个vi /etc/xinetd.d/rsync文件,输入以下内容:
service rsync
  {
    disable = yes
    socket_type  = stream
    wait      = no
    user      = root
    server     = /usr/local/rsync/bin/rsync
    server_args  = --daemon
    log_on_failure += USERID
  }保存。
/* 编加vi /etc/inetd.conf,加入rsync stream tcp nowait root /usr/bin/rsync rsync –daemon */

上面的方法由于存在安全漏洞,所以推荐使用下面的方法:

编辑vi /etc/rc.d/rc.local,在最后添加:/usr/local/bin/rsync --daemon

RSYNC客户端配置:

1、 建立认证文件/etc/rsyncd.secrets添加在服务器端相同的用户和密码apache:apache,同时将文件属性设为ROOT所有,权限设为600
2、 测试能否工作:/usr/bin/rsync -rlHpoDtS --progress --password-file=/etc/rsyncd.secrets /usr/local/apache2/htdocs/ apache@192.168.100.33::BBS_ZT_241 >>/opt/rsync.log

放入自动定时执行:

每隔1小时备份一次
crontab -u root –e
0 */1 * * * /usr/bin/rsync -rlHpoDtS --progress --password-file=/etc/rsyncd.secrets /usr/local/apache2/htdocs/ apache@192.168.100.33::BBS_ZT_241 >>/opt/rsync.log

在服务器端的iptables中对rsync控制:
Vi /etc/rc.d/forward
iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP,如此,只有11.22.33.44这个client ip能连入rsync。
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可

附:
rsync命令的用法

rsync的命令格式可以为:

1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
2. rsync [OPTION]... [USER@]HOST:SRC DEST
3. rsync [OPTION]... SRC [SRC]... DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync有六种不同的工作模式:

1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
2. 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
3. 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

实例说明:
# rsync -vazu -progress terry@192.168.100.21:/terry/ /home

v详细提示
a以archive模式操作,复制目录、符号连接,相当于-rlptgod参数
z压缩
u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
-progress指显示
以上命令是保持客户机192.168.100.90上的/home/terry目录和rsync服务器上的terry目录同步。该命令执行同步之前会要求你输入terry账号的密码,这个账号是我们前面在rsyncd.secrets文件中定义的。如果想将这条命令写到一个脚本中,然后定时执行它的话,可以使用--password-file选项,具体命令如下:
# rsync -vazu -progress --password-file=/etc/rsync.secret
  terry@192.168.100.21:/terry/ /home
要使用--password-file选项,就得先建立一个存放密码的文件,这里指定为/etc/rsync.secret。其内容很简单,如下:
terry:12345
同样要修改文件属性如下:
# chmod 600 /etc/rsyncd.secrets

PS:

服务器RSYNC端配置事例:(4.244)
Vi /etc/rsyncd.conf
[204_files]
 path = /usr/local/apache2/htdocs/files
 auth users = apache
 uid = apache
 gid = apache
 use chroot = no
 secrets file = /etc/rsyncd.secrets
 read only = no
 list = no

 [204_images]
 path = /usr/local/apache2/htdocs/images
 auth users = apache
 uid = apache
 gid = apache
 use chroot = no
 secrets file = /etc/rsyncd.secrets
 read only = no
 list = no

 [204_htdocs]
 path = /usr/local/apache2/htdocs
 auth users = apache
 uid = apache
 gid = apache
 use chroot = no
 secrets file = /etc/rsyncd.secrets
 read only = no
list = no

Vi /etc/rsyncd.secrets #建立用户和密码文件
apache:71GW3GuEBaoJ

Vi /etc/xinetd.d/rsync #自动启动
service rsync
{
 disable = yes
 socket_type = stream
 wait = no
 user = root
 server = /usr/bin/rsync
 server_args = --daemon
 log_on_failure += USERID
}

客户端设置:(4.243)
Vi /etc/rsyncd.secrets #添加认证密码
71GW3GuEBaoJ

Vi /etc/xinetd.d/rsync #开机自动运行
service rsync
{
 disable = yes
 socket_type = stream
 wait = no
 user = root
 server = /usr/bin/rsync
 server_args = --daemon
 log_on_failure += USERID
}



创建客户端运行脚本:
Vi /opt/shell_order/rsync.sh
#/bin/sh

log_path=/opt/shell_order/
time=`date +%Y%m%d`
logname_file=file_sync.log
logname_img=img_sync.log
log_file=$log_path$logname_file$time
log_img=$log_path$logname_img$time
filepath=/usr/local/apache2/htdocs/files/
imgpath=/usr/local/apache2/htdocs/images/
pwfile=/etc/rsyncd.secrets
ip=192.168.100.
refile=_files
reimg=_images
user=apache


fun

转自:

http://www.tianyablog.com/blogger/post_show.asp?idWriter=0&Key=0&BlogID=368688&PostID=4607119
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: