首页 > 学技术 > 技术网文 > 存储备份之家 > 正文

[精彩] [原创]利用rsync和ssh备份实例


来源 chinaunix.net 酷勤网整理

大家可以复制,但请大家保留本文的完整,谢谢!![本人保留著作权}

作者:rhinux

     备份的重要性不言而喻,现在向大家介绍一种本人在实际工作中用到的几乎是完全免费,但又非常实用的备份方法.

[color=blue]一,简述:[/color]
   备份主要采用rsync利用sshd服务进行备份,而无需建立任何其他服务.

[color=blue]二, 服务器配置:[/color]
     1,RedHat AS3
     2,rsync 2.4.6 [RedHat AS3 自带]
     3,ssh-keygen [RedHat AS3 自带]
     4,sshd[RedHat AS3 自带]
[color=blue]三, 环境描述:[/color]
     1,111.111.111.111 ---需被备份的资料存储于该服务器
     2,222.222.222.222 ---备份服务器

[color=blue]四, 备份设置[/color]
1,添加帐号:
分别在111.111.111.111和222.222.222.222上建立备份专用帐号如bak确保在111.111.111.111上的bak具有读取需备份资料的权限,在222.222.222.222上的bak具有写权限,用来执行备份脚本.
2,添加备份脚本:
#######################################################

# ........
# .....222.222.222.222

# #####################################################3#
#
backup_dir="/backup/db_backup"
tbd=`date +%Y%m%d`
mkdir -p $backup_dir/$tbd
chown bak.bak  $backup_dir/$tbd

# delete old backup
find /backup/db_backup -maxdepth 1 -type d -mtime +3 | xargs rm -Rf

# 备份IP:111.111.111.111
# 下的/db/mysql/3306/data下的abc文件夹,其他文件和文件夹一律不做备份.
#
mkdir -p $backup_dir/$tbd/111.111.111.111/3306
rsync -avl --delete -e ssh  --include=data/abc --exclude=data/* bak@111.111.111.111:/db/mysql/3306/data /backup/db_backup/`date +%Y%m%d`/111.111.111.111/3306


说明:在222.222.222.222的/backup/db_backup/"日期"/111.111.111.111/3306/下备份
     111.111.111.111的/db/mysql/3306/data/abc文件夹 .并按照日期保留最近4日的数据.
     参数 “-e ssh”直接用222.222.222.222上执行该脚本的用户登录到111.111.111.111.
     将脚本保存到/home/bak/backupdata.sh 加上可执行属性.
   3,添加crontab:
      命令:$ crontab -e
                 添加如下语句后保存
0 2  * * *  /home/bak/backupdata.sh


以后就每天凌晨2点执行
  但这样还不能无人守候的情况下自动运行,要想自动完成备份工作还需要分发bak帐号公钥.接下来就来讲讲怎样做:
[color=blue]五, sshd的配置[/color]
     1,建立key:


      在111.111.111.111下用bak帐号执行如下命令:

$ ssh-keygen -t dsa -b 2048 -f /home/bak/111.111.111.111-rsync-key
      Generating public/private dsa key pair.
  Enter passphrase (empty for no passphrase): [press enter here]
  Enter same passphrase again: [press enter here]
  Your identification has been saved in /home/bak/111.111.111.111-rsync-key.
  Your public key has been saved in /home/bak/111.111.111.111-rsync-key.pub.
  The key fingerprint is:
  2e:28:d9:ec:85:21:e7:ff:73:df:2e:07:78:f0:d0:a0 bak@111.111.111.111




注意这里不需要输入passphrase.
       2,分发公钥:
         使用scp命令

scp /home/bak/111.111.111.111-rsync-key.pub bak@222.222.222.222:/home/bak

3,为222.222.222.222的bak添加公钥
         在222.222.222.222的/home/bak/.ssh/下建立文件authorized_keys (如没有.ssh文件夹请自行建立,接下来将刚拷贝到 /home/bak/下的111.111.111.111-rsync-key.pub的内容导入 /home/bak/.ssh/authorized_keys
        用如下命令:
$ mkdir /home/bak/.ssh

        $ cat /home/bak/111.111.111.111-rsync-key.pub >;>; /home/bak/.ssh/authorized_keys


4,现在用bak登录111.111.111.111,输入如下命令: 
$ ssh 222.222.222.222 

如果不用密码可以直接登录了那就成功了....
[color=blue]六,本人省略了以上命令和工具参数的说明,一方面也是我没有时间去说明,另一方面也希望能让初学者养成看man文档的习惯.通过man的学习可以按各位的需要选择更适合你的参数.[/color]


[color=blue]
七,本来很早就想将这篇文章写出来和大家分享了,可是这段时间我和我爱的宝贝飞飞的感情问题,一直困扰着我.同样这篇和我上次的Apache 服务器Log分析应用实例http://bbs.chinaunix.net/forum/viewtopic.php?t=455139&show_type=new   一样献给我最爱的飞飞,希望她能真正明白我对她的感情.
 [/color]

[color=blue]八,由于本人也是初学者,本文略显粗糙,如有任何指点和问题欢迎和我联系,大家相互交流提高 :hoash2003@hotmail.com    qq群:9024486
[/color]
                                                            

                                                            rhinux
                                                         2005年02月05日
                                                           于上海
大家可以复制,但请大家保留本文的完整,谢谢!![本人保留著作权}



 rhinux 回复于:2005-02-05 22:13:38

自己顶一个吧,先~~


 soway 回复于:2005-02-06 09:07:36

一个问题,数据量大了就不能用这个备份了。
我现在用的是它,数据量现在慢慢的快达到1T了,每次备份都很慢。。。

看来要专业备份软件了


 rhinux 回复于:2005-02-06 09:46:39

呵呵...当然这个也就是针对较小的备份量做的入门级备份方案.....不过它比较灵活不需要其他多于的软硬件只要有两台机器就可以实现,


 rhinux 回复于:2005-02-07 10:32:35

参考文献:  Using Rsync and SSH Keys, Validating, and Automation by Troy Johnson 
http://www.jdmz.net/ssh/

如有需要本人可以将其翻译成中文


 werix 回复于:2005-02-12 04:35:37

引用:原帖由 "soway" 发表:
一个问题,数据量大了就不能用这个备份了。
我现在用的是它,数据量现在慢慢的快达到1T了,每次备份都很慢。。。

看来要专业备份软件了




通过网络备份用rsync,unison,legato,arkeia好像结果都差不多,跟是不是专业软件无关吧??我看还是要看你的网速和存储端硬盘(介质)速度!rsync的缺点(至少以前是)对大文件备份处理的不好。


 shenmue71 回复于:2005-02-16 17:13:32

rsync在备份有很多重复的文件的时候速度还是很快的


 Godfatherwang 回复于:2005-02-18 10:36:32

请问各位大侠:在FreeBSD上能用这个方法么??好像没有rsync这个命令阿??有什么办法能备份FreeBSD上的数据阿?? :oops:  :em08:


 joyaid 回复于:2005-02-24 17:33:41

呵呵~~楼上可以去找rsync.tar.gz 官网下载一个.


 cdshy 回复于:2005-02-27 22:47:05

引用:原帖由 "soway" 发表:
一个问题,数据量大了就不能用这个备份了。
我现在用的是它,数据量现在慢慢的快达到1T了,每次备份都很慢。。。

看来要专业备份软件了



你说的1T是每次rsync同步时的更新量么?


 melonm 回复于:2005-03-03 11:17:14

rsync+ssh的备份太取决于网络的状况,容错性太差,尤其数据量大的时候.

文档中拷贝公钥到目标机上时,我怎么记得应该拷为authorized_keys2文件呢?


 txkss 回复于:2005-03-05 22:37:35

顶一下
非常好的东西


 60133056 回复于:2005-03-12 14:17:05

本人英文极差!非常需要中文版的  万分感谢!!!


 raining 回复于:2005-03-23 03:53:29

引用:原帖由 "soway" 发表:
一个问题,数据量大了就不能用这个备份了。
我现在用的是它,数据量现在慢慢的快达到1T了,每次备份都很慢。。。

看来要专业备份软件了



You can check out the CPU utilization, SSH is very CPU intensive... It will slow down everything...


 quaine 回复于:2005-04-29 15:05:23

如何做到多次备份呢?
就是每隔3天备份一次,各个备份包时间上相差3天,备份包之间都是互相独立的,等到满5个备份的时候,自动开始从最早的备份包开始做替换备份,以次类推。
而且如果client有多个的话,实现上是否会有问题?


 simonlm 回复于:2005-04-30 11:16:43

我在用rsync备份时,按照文档上所说的建立rsync.conf文件,并在里面加上了auth users 和secrets file项。但在执行命令时,如果以rsync -vzrtopg --progress --delete test@serverip::test /a --password-file=/etc/test.pas 加--password参数的命令执行时,肯定不行报错,不加--password选项,则没事。在rsync.conf文件中如果将auth users 和secrets file项禁止掉,那么加--password参数也没问题。就出在--password参数和auth users 和secrets file项有冲突。 
上网查资料都没说到这一点,大家有没有知道怎么回事的呢!


 melonm 回复于:2005-05-03 20:59:09

用公钥来实现无密码登录,不用密码.关键是要把源机上的公钥铐到目标机用户的~/.ssh/authorized_keys2文件中.


 佛光普照 回复于:2006-03-03 17:00:12

呵呵,受益良多,顶!


 teczm 回复于:2006-03-03 18:43:13

我个人意见是 :LAN内互备还是不要通过ssh的快一些。
在用rsync实现 FreeBSD-Linux-Windows交叉互备时 可以明显感觉到通过ssh方式速度太慢。
:em10:


 teczm 回复于:2006-03-03 18:47:11

引用:原帖由 quaine 于 2005-4-29 15:05 发表
如何做到多次备份呢?
就是每隔3天备份一次,各个备份包时间上相差3天,备份包之间都是互相独立的,等到满5个备份的时候,自动开始从最早的备份包开始做替换备份,以次类推。
而且如果client有多个的话,实现上 ... 


客户端脚本可以实现 


引用:原帖由 Godfatherwang 于 2005-2-18 10:36 发表
请问各位大侠:在FreeBSD上能用这个方法么??好像没有rsync这个命令阿??有什么办法能备份FreeBSD上的数据阿?? :oops:  :em08: 


可以
你可以从rsync.samba.org上下载源代码包自己编译或者从ports也可以。




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=494106
转载请注明作者名及原文出处



收藏本页到: