用rsync,crontab实现Linux服务器间的定时备份

2012/02/15,按毕哥(http://hi.baidu.com/%B1%CF%D0%C2%C4%CF/home)的要求和小胜胜做服务器间定时备份,一直到18号才真正按照要求     用rsync和lftp两种方式实现.   旺旺(http://kongjian.baidu.com.cn/%D6%D9%D0%CB%CD%FA/home)已经做出来啦.  现在看看10分钟的过程,当时用了整整4天时间. 笨,笨,笨···

 

用rsync,crontab实现Linux服务器间的定时备份

用到的博客文章
              http://blog.163.com/fancy_duan/blog/static/9700682011291220923/
              http://www./2004/0906/A20040906340enet.com.cn/article768_2.shtml

用到的书:
             《鸟哥的Linux私房菜 服务器架设篇(第二版)》第13章 远程联机服务器  13.8 用rsync进行同步镜像备份
             《Linux服务器配置全程实录》第14章 配置SSH服务器 14.3客户端访问 14.3.1 4通过密钥方式远程登录

环境:     服务器A1  IP:211.64.33.129   操作系统:CentOS 5.5 
              服务器A2  IP:211.64.33.130   操作系统:CentOS 5.5
              服务器B    IP:211.64.33.131   操作系统:CentOS 5.5

要求:      把服务器A1,A2的数据,备份到B服务器下的不同用户目录.

思路:      在服务器B上建立用户B1,B2,使服务器A1的数据备份到用户B1,服务器A2的数据备份到用户B2.
              在服务器A1,A2中用crontab(定时命令)执行shell脚本,脚本中写入rsync命令。

步骤:

 在服务器B上操作:

>1 查看rsync包是否安装
     [root@B~]# rpm -qa|grep rsynv
     rsync-3.0.6-4.el5_7.1
     查看/etc/services有下面两行
     rsync           873/tcp                         # rsync
     rsync           873/udp                         # rsync


  在服务器A1,A2上操作(以服务器A1为例):
     配置ssh的非交互世登录
>2 在A1上生成一对密钥(用root用户执行)
     [root@A1~]ssh-keygen -t rsa
     Generation public/private rsa key pair.
     Enter file in which to save the key(/root/.ssh/id_rsa):   (密钥存放目录)
     Enter passphrase(empty for no  passphrase):               (口令为空)
     Enter same passphrase again: 
     Your identiflcation has been save in /root/.ssh/id_rsa.   (私钥)
     Your public key has been saved in /root/.ssh/id_ras.pub.  (公钥)
     The key fingerprint is:
     c3:a0:de:f8:24:8e:f6:0d:ed:0a:b0:a2:2d:aa:d3:8b

>3 分别把服务器A1,A2上生成的公钥传到服务器B上的用户B1,B2(以服务器A1把公钥传服务器B上的B1用户为例):
     [root@A1~]# scp .ssh/id_dsa.pub
     password: (enter password, not new passphrase!)

     id_dsa.pub 100%  *****************************  614 00:00

 在服务器B上,分别用B1,B2用户操作(以B1用户为例)
>4  将b.pub文件的内容附加到用户B1 .ssh/authorized_keys文件
      [B1@B~]$ cat b.pub >> ./ssh/authorized_keys
>5  出于安全性,修改.ssh文件,authorized_keys文件权限,并将b.pub文件删除
     [B1@B~]$ chmod  700  .ssh
     [B1@B~]$ chmod  600  ./ssh/authorized_keys
     [B1@B~]$ rm  b.pub

 在服务器A1,A2上操作(以A1为例)
>6  使ssh 程序可以请求一个已经解密了的密钥
      [root@A1~]# ssh-agent
      SSH_AUTH_SOCK=/tmp/ssh-XX1O24LS/agent.14179; export SSH_AUTH_SOCK;
      SSH_AGENT_PID=14180; export SSH_AGENT_PID;
      echo Agent pid 14180;

>7  使ssh免口令登录,即不用输入在服务器A1上生成密钥时的口令
     (当时设置口令为空,但设置口令为空不安全)  
     [root@A1~]#ssh-add
     Identity added: root/.ssh/id_dsa
 
>>  如果输入ssh-add
      出现 Could not open a connection to your authentication agent
      则
      [root@A1~]# ssh-agent /bin/bash
      [root@A1~]#ssh-add

 

[  现在可以试一下用在服务器A1,A2上可以不用密码直接ssh登录到服务器B上的B1,B2用户.
   [root@A1~]# ssh 
   [root@A2~]# ssh 
   在服务器A1上生成密钥,并把公钥传导服务器B上的B1用户目录下.
   只可以实现在服务器A1上无密码ssh登录到服务器B上的B1用户.不能反向登录.
]
 
 脚本化备份过程 
>8  在服务器A1,A2上各编写一个备份脚本backup.sh,放在/root/sh/下(以服务器A1为例)

#!/bin/sh
 TARGET_DIR=
 for SOURCE_DIR in " "
 do
 echo “Backing up $SOURCE_DIR …”
 rsync -av -e ssh  $SOURCE_DIR    : $TARGET_DIR
 done

      [root@A1 sh]# chmod 755 backup.sh

      在服务器A1,A2上以root用户执行(以服务器A1为例)
>9  设置定时任务(crontab)
      [~]# crontab -e
      00 1 * * *  /bin/sh  /sh/back.sh  (每天凌晨1点执行back.sh)

[可以设置每分钟执行一次脚本检验一下
*/1 * * * *  /bin/sh  /sh/back.sh
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值