免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1074 | 回复: 0

Rsync差异数据备份(基于Win/Linux平台) [复制链接]

论坛徽章:
0
发表于 2007-06-15 15:42 |显示全部楼层

Rsync客户端的使用
1、Rsync概述
Rsync 是一个小巧的算法的强大实现。它最基本的功能是高效地镜像一个文件系统的能力。使用 rsync,可以灵活地选用一组网络协议,诸如 nfs、smb 或 ssh,方便地让一个文件系统与另一个文件系统保持同步更新。rsync 的第二个功能,也就是备份系统使用的功能,它可以把已经发生改变或是被删除的文件的老的版本归档。
图11是Rsync的备份服务器结构图,而图12描述了Rsync的工作流程。

图11 Rsync备份服务器结构

图12  Rsync工作流程图
2、Rsync客户端的选择与安装
Rsync客户端包括Windows与Linux两种平台。大多数Linux平台均集成了Rsync客户端,也可从网络上下载进行更新,推荐版本:rsync 2.6.4版本及以上。对于Windows平台上的客户端,推荐使用cwRsync,可从网络上下载后进行安装。
cwRsync(windows平台):
下载链接:
http://sdb6800.sdg.ac.cn/storage/doc.html
软件名称:cwRsync工具下载(for windows)
Rsync(Linux平台)
下载链接:
http://samba.anu.edu.au/rsync/

Linux平台下rsync的安装:
#tar -zxvf rsync-{version}.tar.gz
#cd rsync-{version}
#./configure
#make
#make install
Windows平台下cwRsync的安装:
双击cwRsync的安装文件即可开始进行安装。在安装有过程中推荐只安装客户端。即不勾选【cwRsync Server】项,如图13所示:

图13 cwRsync安装界面之一
为方便使用,可将CcwRsync的安装后的路径放入环境变量中。过程如下:
在【我的电脑】上点击鼠标右键并选择【属性】进入【系统属性】对话框,并进入【高级】选项,如图14所示:

图14 环境变量设置界面I
点击【环境变量】按钮,弹出【环境变量】对话框,如图15所示:

图15 环境变量设置界面II
如图15界面选择Path项后,点击【编辑】按钮,弹出【编辑环境变量】对话框,如图16所示:

图16 环境变量设置界面III
如图16添加cwRsync的安装后的路径到Path的【变量值】中。注意将路径替换为本机安装的实际路径,以“;”号与系统原路径分隔。
点击各界面【确定】按钮以保存更改,并【注销】系统后重新登录系统使环境变量生效。
3、Rsync备份基本语法及构成
(1)基本语法
Usage: rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  or   rsync [OPTION]... [USER@]HOST:SRC DEST
  or   rsync [OPTION]... SRC [SRC]... DEST
  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
语法范例见『Rsync的两种常见备份方式』
注意:rsync在Windows平台和Linux平台上的不同之处
在Linux平台上rsync采用与Linux平台一致的文件路径表示方法,如:/home/zyhua
在Windows平台上rsync采用独特的文件路径表示方法,将Windows路径中的反斜杠(\)转换成斜杠(/),盘符的表示法也有所不同,如:
D:\WORK\* 转换成 /cygdrive/d/WORK/*
(2)语法组成
rsync服务器地址:如:storage.sdg.ac.cn,10.0.0.2
端口:标准端口873,一般备份时客户端无需特别指定端口号
帐号:根据用户需求决定
密码:与帐号共同构成认证体系
已开空间:即备份模块名对应在服务器上的磁盘空间,由服务器管理分配
模块名:在服务器端进行分配。如:backup
4、Rsync的两种常见备份方式
(1)采用系统帐号+ssh的方法
此时rsync的配置文件基本失效。并且备份后的权限为作备份的帐号权限。
备份语法:
rsync –avz –progress –delete –e ssh /locahostl/path/
[email=backup_user@ip_address:/path/to/backup/]backup_user@ip_address:/path/to/backup/[/email]
如:
rsync –avz –progress –delete –e ssh /cygdrive/d/test
[email=zyhua@10.0.0.2:/home/zyhua/tmp]zyhua@10.0.0.2:/home/zyhua/tmp[/email]
运行效果如图:

此种方法只有在具有系统帐号的情况下才能使用。
(2)基于rsync本身配置中设置的权限
此时的用户是rsync的独立用户。需在配置文件中进行配置,但些时rsync以root运行,客户端采用合理参数可保持原文件属性。建议不建立相应系统用户。
备份语法:
rsync –avz –progress –delete /localhost/path
[email=backup_user@ip_address::subject/project_name/]backup_user@ip_address::subject/project_name/[/email]
如:
rsync –avz  --progress –delete /cygdirve/d/test
[email=rsync@10.0.0.2::backup/tmp]rsync@10.0.0.2::backup/tmp[/email]
运行效果如图:

采用rsync进行数据传输的一般方法。推荐采用。后文均以此种备份方式为例进行讲述。
(3)参数说明
-v是verbose。
-z是压缩。
--progress是指显示出详细的进度情况。
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致,相反亦成立。请慎用,以免造成不必要的破坏。
-a是指采用归档方式,等同于参数-rlptgoD,主要用来保持文件原有属性如属主、时间等。
--password-file =/path/to/passwordfile中,/path/to/passwordfile为密码文件的路径。
/path/to/backup/指要备份的目录。
backup_user是指定密码文件中的用户名,即帐号名。
ip_address为服务器地址
subject是模块名,也就是在/etc/rsyncd.conf中自定义的名称。  
project_name为备份到远程的目录名。(可以为空)
5、如何向服务器上传/下载文件
采用rsync进行文件的上传/下载,虽然客户端工具略有不同,但语法基本相同,下面分别举例说明。
(1)Linux平台下
在Linux平台下,在命令行状况下输入相应的rsync语法即可完成文件的传输。
I 上传文件
如将用户当前目录下test目录里的文件上传到服务器(10.0.0.2)上backup模块里的tmp目录下,用户名rsync。此时rsync语法如下:
rsync -avz --progress --delete ~/test/*
[email=rsync@10.0.0.2::backup/tmp/]rsync@10.0.0.2::backup/tmp/[/email]
运行效果如图:

II 下载文件
如将服务器(10.0.0.2)上backup模块里tmp目录里的文件下载到用户当前目录下test目录里,用户名rsync。此时rsync语法如下:
rsync –avz –progress –delete
[email=rsync@10.0.0.2::backup/tmp/]rsync@10.0.0.2::backup/tmp/[/email]
~/test/
运行效果如图:

(2)Windows平台下
在Windows平台下,运行cmd命令行进入MS_DOS【命令提示符】状况。
I 上传文件
如将本机D盘test目录下的文件上件到服务器(10.0.0.2)上backup模块里的tmp目录下,用户名rsync。此时rsync语法如下:
rsync –avz –progress –delete /cygdrive/d/test/
[email=rsync@10.0.0.2::backup/tmp]rsync@10.0.0.2::backup/tmp[/email]
运行效果如图:

注:/cygdrive/d/test即表示文件路径D:\test
II 下载文件
如将服务器(10.0.0.2)上backup模块下tmp目录里的文件下载到本机目录D:\test下,用户名rsync。此时rsync语法如下:
rsync –avz –progress –delete
[email=rsync@10.0.0.2::backup/tmp/]rsync@10.0.0.2::backup/tmp/[/email]
/cygdrive/d/test/
运行效果如图:

6、如何查看服务器文件列表
在某些情况下,用户可能需要查看某模块下的文件列表,加上—list-only参数的rsync即可完成此项功能,但低版本rsync不对此参数提供支持。建议用户安装rsync2.6.4及以上版本。
如查看服务器(10.0.0.2)上backup模块下tmp目录里的文件列表信息,用户名rsync,其语法如下:
rsync –list-only
[email=rsync@10.0.0.2::/backup/tmp/]rsync@10.0.0.2::/backup/tmp/[/email]
运行效果如图所示:

7、如何去除部分文件
配置—exclude参数可以去除整个备份目录下的部分文件。
如在上传时不想上传D盘test目录下以“ap”开头的文件。
语法范例如下:
rsync –avz –delete –progress –exclude=ap* /cygdrive/d/test/
[email=rsync@10.0.0.2::backup/tmp/]rsync@10.0.0.2::backup/tmp/[/email]
运行效果如图所示:

8、如何向服务器作增量备份
Rsync除了很好的提供文件镜像服务以外,也可以用来做文件的增量备份,它的备份原理是:将当前的文件备份到备份模块的current子目录里,当新上传文件时,它和current目录里的文件作比较,如果发现有变化了的文件,将此文件从current目录里分离出来,在同一模块下新建立一个目录并将变化了的文件保存在此目录里,一般以时间的格式来定名新建立的目录名。
如将D盘test目录下的文件作增量备份到服务器(10.0.0.2)上backup模块里,并且将文件备份到current子目录下。
用rsync作备份的语法范例如下:
rsync –avz –delete –backup –backup-dir=/friday /cygdrive/d/test/
[email=rsync@10.0.0.2::backup/current/]rsync@10.0.0.2::backup/current/[/email]
其中:
--backup参数用来指明此次文件上传是作增量备份
--backup-dir参数是用来指明存放变化了的文件的目录,它处于模块的下一级目录下,如本例中的“/friday”即相当于“backup/friday”路径下。此目录的文件名一般以时间的形式来命名,如在Linux平台下,即以命令行`date +%Y%m%d-%H_%M`来代替普通的文件名(如本例中的friday)。
下图是在作增量备份时的第一次上传文件。

此时将D盘test目录里的rsync.bat文件删除后再运行增量备份的命令。此时的效果如下图所示:

从上图可以清晰的看到—delete参数的效果,它会将current目里的文件rsync.bat文件删除。同时对于current目录里已有的文件它不作传输,这也是rsync的一个重要特性:只传变化了的文件,提高传输效率。此时如果从服务器上查看backup模块下的文件列表,可以发现新建立了friday目录,并将rsync.bat文件保存在此目录里。
下图是查看backup模块里的文件列表结果:

下图是进一步查看新建立的备份目录(friday)列表的结果:

从上图可以看出rsync.bat文件已经存放到了friday目录里。
9、如何作无密码交互的文件传输
配合合理的参数,rsync可以用来作无密码交互的文件传输。具体步骤如下:
(1)建立密码文件。
新建一个文本文件(如:passwd.txt),向其中写入密码。并且保证此密码文件只对当前登录用户具有权限。在Linux平台下可使用使用命令行“chmod 700 passwd.txt“实现,在Windows平台下可将此密码文件保存在“C:\Documents and Settings\用户名”路径下。
(2)运行类似下面范例的命令行。
rsync -avz --delete --progress --password-file="/cygdrive/c/Documents and Settings/zyhua/passwd
.txt" /cygdrive/d/test/
[email=rsync@10.0.0.2::backup/tmp/]rsync@10.0.0.2::backup/tmp/[/email]
--password-file参数用来指定密码文件的位置
运行效果如图所示:

10、如何定时向服务器作备份
向服务器作定时备份需要配合各系统的定时执行程序功能,在Linux平台通过cron来实现,Windows平台上通过任务计划来实现。
(1) Windows平台下
I 建立批处理文件,如backup.bat
II 编辑此文件并写入rsync文件传输语句:如:第9小节的无密码交互文件传输语句
III 通过Windows的任务计划功能将此脚本添加进去使其定期执行。
添加过程:【控制面板】->【性能和维护】->【任务计划】->【添加任务计划】
添加任务计划后的任务属性如图所示:
   
(2) Linux平台下
I 编写shell脚本程序,在其中加入备份命令行。并保存在/etc/cron.backup目录下。
II 使此备份脚本可执行。如:chmod u+x backup
III 加入cron使其定期运行。
#vi /etc/crontab
加入如范例所示语句
00 23 * * * root run-parts /etc/cron.backup
下面给出了一个Linux平台下较为完整的定期增量备份脚本以作参考:
#!/bin/sh  
# This script does personal backups to a rsync backup server. You will end up  
# with a 7 day rotating incremental backup. The incrementals will go  
# into subdirectories named after the day of the week, and the current  
# full backup goes into a directory called "current"  
# directory to backup  
BDIR=/var/csdb-data
# the name of the backup machine  
[email=BSERVER=kevin@storage.sdg.ac.cn]BSERVER=kevin@storage.sdg.ac.cn[/email]

# your password on the backup server  
export RSYNC_PASSWORD=123456  
BACKUPDIR=`date +%A`  
OPTS="--delete --backup --backup-dir=/$BACKUPDIR -a"  
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin  
# the following line clears the last weeks incremental directory  
[ -d /home/kevin/emptydir ] || mkdir /home/kevin/emptydir  
rsync --delete -a /home/kevin/emptydir/ $BSERVER::csdb/$BACKUPDIR/  
rmdir /home/kevin/emptydir  
# now the actual transfer  
rsync $OPTS $BDIR $BSERVER::csdb/current


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/243/showart_321986.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP