rsync+crontab实现Linux服务器间同步
环境说明:
工作服务器A:IP地址 192.168.4.193,操作系统 CentOS 5.5
备份服务器B:IP地址 192.168.4.194,操作系统 CentOS 5.5
实现目的:每分钟,将A服务器上的用户目录/home,自动备份到B服务器的/home下,不需要任何用户交互。
配置步骤:
1、配置服务器A
1)[root@Server-B ~]# rpm -qa| grep rsync #查看是否有rsync包
rsync-2.6.8-3.1
2)rsync的rpm包本身没有附带rsyncd的配置文件,需要手动创建它(/etc/rsyncd.conf)
[root@Server-B ~]# vi /etc/rsyncd.conf
#先定义整体变量
#secrets file = /etc/rsyncd.secrets
#motd file = /etc/rsyncd.motd
#read only = yes
#list = yes
#uid = nobody
#gid = nobody
#hosts allow = 192.168.100.90 #哪些电脑可以访问rsync服务
#hosts deny = 192.168.100.0/24 #哪些电脑不可以访问rsync服务
#max connections = 2
#log file = /var/log/rsyncd.log
#pid file = /var/run/rsyncd.pid
l#ock file = /var/run/rsync.lock
#再定义要rsync目录
#[home]
#comment = home
#path = /home
#auth users = terry,rsync
#[test]
#comment = test rsync
#path = /home/test
secrets file =/etc/rsyncd.secrets
motd file =/etc/rsyncd.motd
read only=yes
list =yes
uid=nobody
gid =nobody
hosts allow =192.168.4.0
#hosts deny=!
max connections =2
log file =/var/log/rsyncd.log
pid file =/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
[home]
comment =home
path=/home
auth users=root
# vi /etc/rsyncd.motd
rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:
Welcome to use the rsync services!
4.services
# vi /etc/services
services并不是rsync的配置文件,这一步也可以不做。而修改了services文件的好处就在于系统知道873端口对就的服务名为rsync。修改services的方法就是确保services中有如下两行,没有的话就自行加入:
rsync 873/tcp # rsync
rsync 873/udp # rsync
5./etc/xinetd.d/rsync
# vi /etc/xinetd.d/rsync
建立一个名为/etc/xinetd.d/rsync文件,输入以下内容:
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/rsync/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
保存后,就可以运行rsync服务了。输入以下命令:
# /etc/rc.d/init.d/xinetd start
这样rsync服务就在这台机器上(192.168.4.193)运行起来了,接下来就是如何来使用它了。
客户端实现同步:首先ssh自动登录:
自动ssh/scp方法==
A为本地主机(即用于控制其他主机的机器) ;192.168.4.194
B为远程主机(即被控制的机器Server),192.168.4.193
A和B的系统都是Linux
在A上运行命令:
# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)
# ssh [email protected] "mkdir .ssh" (需要输入密码)
# scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub (需要输入密码)
在B上的命令:
# touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到authorized_keys 中)
回到A机器:
# ssh [email protected] (不需要密码, 登录成功)
写shell
#!/bin/bash
/usr/bin/rsync -vazu --progress --delete [email protected]:/home/ /home
编写crontab
*/1 * * * * sh /root/back.sh
剩余的工作测试
在测试环境中试过