利用rsync+crontab实现Linux服务器间的定时增量备份

rsync是Linux、UNIX系统下的数据镜像备份工具,它的特性以下:
一、能够镜像保存整个目录树和文件系统。
二、能够很容易作到保持原来文件的权限、时间、软硬连接等等。
三、无须特殊权限便可安装。
四、优化的流程,文件传输效率高。
五、能够使用rcp、ssh等方式来传输文件,固然也能够经过直接的socket链接。 
六、支持匿名传输。
服务器

今天就利用rsync+crontab来实现Linux服务器间的定时增量备份。
环境说明:
工做服务器A:IP地址 192.168.1.86,操做系统 CentOS 5.5,已创建用户 tom
备份服务器B:IP地址 192.168.1.87,操做系统 CentOS 5.5,已创建用户 jack(uid 503, gid 503)

实现目的:
天天早上3点,将A服务器上的用户目录/home,自动备份到B服务器的/home/jack/backup-A下,备份增量进行,不须要任何用户交互。
配置步骤:
一、配置备份服务器B
1)[root@Server-B ~]# rpm -qa| grep rsync   #查看是否有rsync包
 rsync-2.6.8-3.1
以上输出说明rsync已经装好了,保证/etc/services有下面的行

2)rsync的rpm包自己没有附带rsyncd的配置文件,须要手动建立它(/etc/rsyncd.conf)
[root@Server-B ~]# vi /etc/rsyncd.conf 
3)修改/etc/xinetd.d/rsync,打开rsync服务
[root@Server-B ~]# vi /etc/xinetd.d/rsync
 
4)开启rsyncd服务,并设置系统启动时,加载rsync服务
[root@Server-B ~]# /usr/bin/rsync --daemon
 
5)检验rsync服务是否启动成功
 
有以下内容表示已经成功启动

6)配置ssh的非交互式登陆
思路:服务器A生成一对RSA密钥,本身保留私钥,将私钥附加到登陆服务器B的authorized_keys中,A登陆B,以及进行A到B的rsync就不用交互式输入密码了。
>>在服务器A上生成一对密钥(以root的身份执行) 
>>远程登陆到备份服务器B上而且建立.ssh目录。
[root@Server-A ~]# ssh jack@192.168.1.87
 …
[jack@Server-B ~]$ mkdir .ssh;chmod 0700 .ssh
 
>>在A机上执行远程拷贝公钥到B机:
[root@Server-A ~]# scp .ssh/id-rsa.pub root@192.168.1.87: /home/jack/.ssh/authorized_keys
这样,无交互的ssh登陆就完成了。特别注意的是B服务器的.ssh目录权限,最好是700,若是赋予它过多的权限,无交互登陆可能不生效!
7)编制备份脚本
在服务器A上编写一个备份脚本,放置在/home/tom/public_scripts下,名为backup.sh
 #!/bin/sh
 TARGET_DIR=backup-A
 for SOURCE_DIR in “/home”
  do
   echo “Backing up $SOURCE_DIR …”
   rsync -au –delete $SOURCE_DIR
jack@192.168.1.87:/home/jack/$TARGET_DIR
  done
[root@Server-A public_scripts]# chmod 755 backup.sh
该脚本权限设置为755,以便其余用户可访问到。
8)修改计划任务
在服务器A上,用root身份执行如下命令
[root@Server-A ~]# crontab -e
 3 * * * * /home/tom/public_scripts/backup.shssh

相关文章
相关标签/搜索