linux rsync数据备份怎么免密码,Rsync差异数据备份(基于Win/Linux平台)

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值