Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552999
  • 博文数量: 81
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 866
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-25 09:08
个人简介

www.cloud86.cn

文章分类

全部博文(81)

文章存档

2017年(2)

2014年(1)

2011年(1)

2007年(5)

2006年(31)

2005年(41)

我的朋友

分类: LINUX

2007-06-15 15:42:41

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平台):
下载链接:
软件名称:cwRsync工具下载(for windows)
Rsync(Linux平台)
下载链接:
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/
如:
rsync –avz –progress –delete –e ssh /cygdrive/d/test
运行效果如图:
 
此种方法只有在具有系统帐号的情况下才能使用。
(2)基于rsync本身配置中设置的权限
此时的用户是rsync的独立用户。需在配置文件中进行配置,但些时rsync以root运行,客户端采用合理参数可保持原文件属性。建议不建立相应系统用户。
备份语法:
rsync –avz –progress –delete /localhost/path
如:
rsync –avz  --progress –delete /cygdirve/d/test
运行效果如图:
 
 采用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/*
运行效果如图:
 
 II 下载文件
 如将服务器(10.0.0.2)上backup模块里tmp目录里的文件下载到用户当前目录下test目录里,用户名rsync。此时rsync语法如下:
rsync –avz –progress –delete ~/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/
运行效果如图:
 
注:/cygdrive/d/test即表示文件路径D:\test
II 下载文件
如将服务器(10.0.0.2)上backup模块下tmp目录里的文件下载到本机目录D:\test下,用户名rsync。此时rsync语法如下:
rsync –avz –progress –delete /cygdrive/d/test/
运行效果如图:
 
6、如何查看服务器文件列表
 在某些情况下,用户可能需要查看某模块下的文件列表,加上—list-only参数的rsync即可完成此项功能,但低版本rsync不对此参数提供支持。建议用户安装rsync2.6.4及以上版本。
 如查看服务器(10.0.0.2)上backup模块下tmp目录里的文件列表信息,用户名rsync,其语法如下:
rsync –list-only
运行效果如图所示:
 
7、如何去除部分文件
 配置—exclude参数可以去除整个备份目录下的部分文件。
 如在上传时不想上传D盘test目录下以“ap”开头的文件。
 语法范例如下:
rsync –avz –delete –progress –exclude=ap* /cygdrive/d/test/
 运行效果如图所示:
 
8、如何向服务器作增量备份
Rsync除了很好的提供文件镜像服务以外,也可以用来做文件的增量备份,它的备份原理是:将当前的文件备份到备份模块的current子目录里,当新上传文件时,它和current目录里的文件作比较,如果发现有变化了的文件,将此文件从current目录里分离出来,在同一模块下新建立一个目录并将变化了的文件保存在此目录里,一般以时间的格式来定名新建立的目录名。
如将D盘test目录下的文件作增量备份到服务器(10.0.0.2)上backup模块里,并且将文件备份到current子目录下。
用rsync作备份的语法范例如下:
rsync –avz –delete –backup –backup-dir=/friday /cygdrive/d/test/ rsync@10.0.0.2::backup/current/
 其中:
 --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/
 --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 

# 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

阅读(5588) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

lhrong2008-01-19 10:14:22

好文章