你必须要知道的数据备份工具rsync

数据镜像备份工具:rsync

什么是rsync ?

rsync 是Linux/UNIX系统下的文件同步工具和数据传输工具,它采用:“rsync算法”使一个客户机和远程文件服务器之间的文件同步。

rsync传输的范围:通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;

rsync可以在中断之后恢复传输;rsync只传输源文件和目标文件之间不一致的部分;

rsync可以执行完整备份或增量备份

rsync的特性:

1、可以镜像保存整个目录树和文件系统

2、可以增量同步数据、文件传输效率高,因而同步时间短

3、可以保持原有文件的权限、时间等属性

4、加密传输数据,保证数据的安全性

5、可以使用rcp、ssh等方式来传输文件,当然也可以直接通过Socket连接传输文件。

6、支持匿名传输

rsync的主页地址为:http://rsync.samba.org/

rsync的应用模式:

第一种:shell应用模式,也称为本地shell模式;

第二种:远程shell应用模式,是利用SSH执行底层连接和加密传输;

第三种:是查询(也叫列表)模式,与ls命令实现的功能类似;

最后一种是服务器模式,平时所说的架设rsync服务器是指这种模式。

下面来说一下这四模式的应用:

1、本地shell模式

本地shell模式主要用于复制指定目录到另外一个目录,例如:

  1. [root@localhost ~]# rsync -av /var /tmp   // -a 表示以递归的方式传输文件,并保持所有文件的属性;-v 表示输出详细信息。
  2. ....
  3. .....
  4. var/www/usage/webalizer.png
  5. var/yp/
  6. var/yp/nicknames
  7. var/yp/binding/
  8. sent 65435260 bytes  received 20012 bytes  43636848.00 bytes/sec
  9. total size is 65359881  speedup is 1.00
  1. [root@localhost ~]# ls /tmp
  2. var

这时在/tmp下里有一个var目录

  1. [root@localhost ~]# rsync -av /var/ /tmp
  2. www/usage/webalizer.png
  3. yp/
  4. yp/nicknames
  5. yp/binding/
  6. sent 65435223 bytes  received 20011 bytes  43636822.67 bytes/sec
  7. total size is 65359881  speedup is 1.00
  8. [root@localhost ~]# ls /tmp
  9. account  cache  crash  cvs  db  empty  games  gdm  lib  local  lock  log  mail  nis  opt  preserve  racoon  run  spool  tmp  tux  var  www  yp

这时在/tmp下有很多目录,这些目录是var下的所有目录。

[root@localhost ~]# rsync -av /var /tmp

[root@localhost ~]# rsync -av /var/ /tmp

对于上面这两个命令所不同之处就是在var后面有没有那个斜杠,

对于第一个命令是就是将指定的源目录复制到指定的目的目录;

对于第二个命令就是复制指定源目录中的内容到目的目录中,而不是目录本身。

而对于目标参数的后面是否有斜杠没有任何作用

2、远程shell模式

通过远程shell模式,rsync可以把指定的本地目录复制到另一个系统中。例如:

  1. [root@localhost ~]# rsync -av /var 192.168.35.4:test
  2. root@192.168.35.4's password:
  3. ....
  4. .....
  5. var/www/usage/webalizer.png
  6. var/yp/
  7. var/yp/nicknames
  8. var/yp/binding/
  9. sent 65435260 bytes  received 20012 bytes  43636848.00 bytes/sec
  10. total size is 65359881  speedup is 1.00

如果以root用户身份来执行此命令,rsync会提示输入远程主机192.168.35.4的root密码。完成密码验证后,会在远程主机的root用户根目录下创建test目录,如果所指定的目录存在则不创建。在默认情况下,rsync使用Secure Shell(SSH)作为传输机制。

3、rsync列表模式

在这个模式下,rsync与ls命令有些相似的功能。例如,查看本地系统中/tmp/var/目录的内容,

  1. [root@localhost ~]# rsync -a /tmp/var
  2. ... ...
  3. ... ...
  4. -rw-r--r--        3714 2012/06/20 10:26:41 var/www/usage/index.html
  5. -rw-r--r--        1478 2006/07/13 10:18:28 var/www/usage/msfree.png
  6. -rw-r--r--        2056 2012/06/20 10:26:41 var/www/usage/usage.png
  7. -rw-r--r--       29976 2012/06/20 10:26:41 var/www/usage/usage_201206.html
  8. -rw-r--r--        1253 2006/07/13 10:18:28 var/www/usage/webalizer.png
  9. drwxr-xr-x        4096 2012/06/19 17:08:19 var/yp
  10. -rw-r--r--         185 2006/07/13 13:00:59 var/yp/nicknames
  11. drwxr-xr-x        4096 2009/04/15 17:03:41 var/yp/binding

也可以来查看远程主机的

  1. [root@localhost ~]# rsync -a 192.168.35.4:test/var
  2. root@192.168.35.4's password:
  3. ... ...
  4. ... ...
  5. -rw-r--r--        3714 2012/06/20 10:26:41 var/www/usage/index.html
  6. -rw-r--r--        1478 2006/07/13 10:18:28 var/www/usage/msfree.png
  7. -rw-r--r--        2056 2012/06/20 10:26:41 var/www/usage/usage.png
  8. -rw-r--r--       29976 2012/06/20 10:26:41 var/www/usage/usage_201206.html
  9. -rw-r--r--        1253 2006/07/13 10:18:28 var/www/usage/webalizer.png
  10. drwxr-xr-x        4096 2012/06/19 17:08:19 var/yp
  11. -rw-r--r--         185 2006/07/13 13:00:59 var/yp/nicknames
  12. drwxr-xr-x        4096 2009/04/15 17:03:41 var/yp/binding

4、服务器模式

这种模式是基于C/S模式的,这种模式下,rsync在后台启用了一个守护进程,这个进程在rsync服务器永久的运行,用于接收文件传输请求,因此,客户端既可以把文件发送给守护进程,也可以向守护进程请求文件。rsync的服务器模式非常适合于异地的中心备份服务器或数据异地存储库来使用。关于服务器模式的使用方法。

下面来针对这种模式做一个实验:

有两台服务器:A和B 所用的系统是Linux,A 系统作为网站服务器,B作为A的远程容灾备份机,所以A就是rsync的服务器端,B是rsync的客户端。

所用的Linux版本是:Red Hat Enterprise 5.4

内核版本:2.6.18-164.el5

A系统的ip地址:192.168.35.3 255.255.255.0

B系统的ip地址:192.168.35.4 255.255.255.0

在两台服务器上分别下载安装上rsync这个软件,安装过程:

下载地址:http://rsync.samba.org/,这里用的是:rsync-3.0.9 下面进行编译安装:

  1. # tar zxvf rsync-3.0.9.tar.gz
  2. # cd rsync-3.0.9
  3. # ./configure
  4. # make
  5. # make install

这样就完成了rsync的安装

下面来为实验做一些配置

1、在A系统上配置rsync

rsync的配置文件为/etc/rsyncd.conf 在安装完rsync时默认是没有这个文件的,手动创建一个就行了。rsync.conf 文件由一个或多个模块结构组成的。

配置文件如下:

uid = nobody

gid = nobody

-------------这两项是指定当该模块传输文件时守护进程应该具有的用户ID和组ID,默认值是“nobody”------------

use chroot = no

max connections = 10

--------这项是指定模块的最大并发连接数量,以保护服务器。如果是0说明没有限制-------

strict modes = yes

----------这项是指定是否检查口令文件的权限,yes为是,no为否,如设置yes,密码文件的权限必须是root用户的权限---------

pid file = /var/run/rsyncd.pid

----rsync守护进程对应的PID文件路径-----------

lock file = /var/run/rsync.lock

-----------用来支持 max connections的锁文件,默认值是 /var/run/rsyncd.lock--------

log file = /var/log/rsyncd.log

----日志文件输出文件路径-----

--------下面定义的是一个模块,也是要复制的内容和一些所要用到的文件定义-----

[ixdba]

path = /var  -------指定要复制的文件或者目录,是必须要设置的项------

comment = ixdba file

ignore errors

--------忽略一些无关的I/O的错误--------

read only = no  -----设置为no表示客户可以上传文件,设置为yes表示只读------

write only = no  -----设置为no表示客户可以下载文件,设置为yes表示不能下载----

hosts allow = 192.168.35.4  ---设置可以连接rsync服务器的主机,也可以设置为 “*” 表示允许连接任何主机-----

hosts deny = 172.16.0.1 ---表示拒绝连接的主机---

list = false ----设定当客户请求可以可以使用的模块列表时,该模块是否被列出来。默认值true,设置为false为隐藏的模块--------

uid = root

gid = root

auth users = backup -----用来定义可以连接该模块的用户名,多个用户可以用逗号或者空格隔开。需要注意的是,这里的用户和Linux系统用户没有任何关系。-------

secrets file = /etc/server.pass ------------------这个一个文件的路径,这个文件是用来定义用户名和密码的。 这个与auth users配合使用的,只有在auth users被定义时,该文件才起作用。这个文件也要自己来创建---------

完整的配置如下:

  1. uid = nobody
  2. gid = nobody
  3. use chroot = no
  4. max connections = 10
  5. strict modes = yes
  6. pid file = /var/run/rsyncd.pid
  7. lock file = /var/run/rsync.lock
  8. log file = /var/log/rsyncd.log
  9. [ixdba]
  10. path = /var
  11. comment = ixdba file
  12. ignore errors
  13. read only = no
  14. write only = no
  15. hosts allow = 192.168.35.4
  16. hosts deny = 172.16.0.1
  17. list = false
  18. uid = root
  19. gid = root
  20. auth users = backup
  21. secrets file = /etc/server.pass

下面来创建/etc/server.pass文件

# vim /etc/server.pass   添加如下内容即可:

backup:ixdba123

还要改变一下这个文件的权限:

# chmod 600 /etc/server.pass

2、在A系统上启动rsync守护进程

执行如下指令启动rsync守护进程:

# /usr/local/bin/rsync --daemon

来查看一下

[root@localhost ~]# ps aux | grep rsync

root      1498  0.0  0.1   4184   552 ?        Ss   15:57   0:00 /usr/local/bin/rsync --daemon

说明进程启动了,再来看一下873端口是否打开了。

[root@localhost ~]# netstat -tlnp | grep rsync

tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1498/rsync

tcp        0      0 :::873                      :::*                        LISTEN      1498/rsync

873端口也打开了。这样在A上就配置完成了,下面来B上来做一些工作。

3、在B服务器上配置rsync

在备份机上是不用做太的多设置的,只要执行rsync同步操作即可。为了不在同步的过程中不用输入密码,只要在B服务器上创建一个文件就行了也就相当于A上的server.pass文件

# vim /etc/server.pass

在里面只要有一个密码就行了。

ixdba123 ---这个密码一定要于A服务器上的server.pass文件中写的密码相同不然会出错的。

下面来执行同步操作:

  1. [root@localhost ~]# /usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exclude "debug*" backup@192.168.35.3::ixdba /ixdba.net/ --password-file=/etc/server.pass

在这个命令中参数的含义如下:

在 “-vzrtopg”选项中,v 是详细模式输出;z表示即在传输时对备份的文件进行压缩处理;r表示递归模式处理;t是用来保持文件时间信息;o是用来保持文件属主信息;p用来保持文件权限;g是用来保持文件的属组信息。

--delete 指定以rsync服务器端为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致。在这里是A为基准进行同步的。

--progress 用于显示数据镜像同步的过程

--exclude 用于排除不需要传输的文件类型。

“backup@192.168.35.3::ixdba”表示对服务器192.168.35.3中的ixdba模块进行备份,也就是指定备份的模块。backup表示使用“backup”这个用户对模块进行备份。

“/ixdba.net”用于指定备份文件在客户端机器上的存放路径,也就是将备份的文件放在备份机的/ixdba.net目录下。

--password-file=/etc/server.pass 用来指定客户机上存放密码文件的位置,这样在客户端执行同步命令就无需输入交互密码。

其实,rsync作为客户端工具,还有很多的选项和参数,更多详细可以man rsync 一下,来查看。

在客户端执行这个命令时可能会出现一些,意想不到的错误,这些错误的解决方法在网上都能找到,在这里也贴出一些常见的错误。

Rsync同步常见问题:

错误一:

@ERROR: auth failed on module xxxxx

rsync: connection unexpectedly closed (90 bytes read so far)

rsync error: error in rsync protocol data stream (code 12) at io.c(150)

解决:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。

错误二:

password file must not be other-accessible

continuing without password file

Password:

解决:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

错误三:

@ERROR: chroot failed

rsync: connection unexpectedly closed (75 bytes read so far)

rsync error: error in rsync protocol data stream (code 12) at io.c(150)

解决:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步。

错误四:

rsync: failed to connect to 218.107.243.2: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]

解决:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp 的873端口打开。

我在执行这个命令时出现了最后一种错误,把iptables关闭后,命令就执行成功了。

在客户端也可以定义一个任务计划来实现自动备份也就是加入crontab

  1. # crontab -e
  2. 或 # vim crontab
  3. */5 * * * * root /usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exclude "debug*" backup@192.168.35.3::ixdba /ixdba.net/ --password-file=/etc/server.pass

保存退出,就执行了。

也可以写成一个脚本来执行。

以上方法是实现了rsync的远程热备份,但不是实时备份,服务器端和客户端的数据有可能存在不一样,因为在备份的时候有一段时间间隔。

很好的是,Linux 2.6.13以后的内核提供了inotify文件系统监控机制,通过rsync与inotify的组合,可以实现rsync服务器端和客户端数据的实时同步。

这个会在下一篇文章中出现。

转载于:https://blog.51cto.com/zhou123/904097

你必须要知道的数据备份工具rsync相关推荐

  1. Linux下的数据备份工具rsync

    Linux下的数据备份工具很多,用得最多的是rsyns(远程同步) 同步远程数据类似scp 同步本地数据类似cp root@ip-172-31-8-212:~# rsync /etc/passwd / ...

  2. 数据备份_天津数据备份工具多少钱

    天津数据备份工具多少钱 DFA7G4AH 天津数据备份工具多少钱 参观了解DIDC情况后,江凌表示,市委市一直非常重视工业设计行业的发展,但目前尚无专门针对扶持工业设计的.伴随着制造业的发展,产品零件 ...

  3. Linux数据备份工具

    一.rsync数据备份工具 1.rsync工具简介 rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上. rsync有如下特性: 可以镜像保存 ...

  4. Rsync 数据备份工具

    Rsync数据备份工具 1.Rsync简介 Rsync是一款开源的数据备份工具,可以用于不同主机之间同步传输数据,可以实现全量备份和增量备份. Rsync监听端口: Rsync工具默认运行在TCP的8 ...

  5. 服务器怎么拷贝文件夹下,Syncovery(数据备份工具)如何在windows下远程访问服务器批量拷贝文件?Syncovery图文教...

    Syncovery是一款数据备份工具,能够在pc.mac.服务器.在线存储空间之间同步,并自带FTP,是一款灵活的同步备份工具,并同步Mac电脑,服务器,笔记本电脑,以及在线存储空间,一起来看看具体的 ...

  6. GoodSync 数据自动同步备份工具VS傲梅轻松备份系统数据备份工具 哪款更好?

    备份和同步软件的使用越来越广泛,因为在这个数据驱动的时代,数据的备份和恢复非常重要.在这里我想向大家推荐两款备份和同步软件--GoodSync和傲梅轻松备份. GoodSync是一款备份和同步软件,它 ...

  7. iphone备份用什么软件?好用的苹果数据备份工具推荐!

    众所周知,如果要将iPhone的数据跟电脑进行传输备份的话,我们需要用到iTunes这个pc工具.但是对于iTunes,不少人都反映这个软件比较难用,用不习惯.于是,顺应时代命运的iPhone备份同步 ...

  8. 数据镜像备份工具rsync + inotify

    数据镜像备份工具rsync + inotify 一.rsync介绍: rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他 ...

  9. Xtrabackup使用指南 InnoDB数据备份工具

    一.Xtrabackup介绍 A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbac ...

最新文章

  1. 基于人脸识别、姿态检测、距离估计的看电视姿态检测
  2. Linux字符设备驱动程序的框架(新写法)
  3. java设计模式---调停者模式
  4. HTTPS原理和CA证书申请
  5. linux从前往后读取文件夹图片名称,Linux目录和文件中的常用命令(三)
  6. python源码中的学习笔记_第12章_编码格式与文件操作
  7. Java空字符串与null区别
  8. 书信用语“商祺”是的意思
  9. 数据开放接口第一弹:12306官网中全国火车站数据
  10. mdf文件修复工具 专业修复sql server数据库
  11. html 怎么让他变成圆角,html让图片变圆角
  12. 计算机d盘无法格式化,电脑D盘无法格式化怎么办
  13. 联想340c笔记本cpu能升级吗_笔记本电脑可以升级CPU吗
  14. 面对工业4.0,我国工业企业的挑战与对策
  15. Pyecharts基本图:日历图
  16. A transformer-based model to predict peptide– HLA class I binding and optimize mutated peptides for
  17. cdma特有效应_CDMA原理部分考试题(含答案).doc
  18. 多校1(1009)(杭电4308)
  19. 跨时钟域为什么要双寄存器同步
  20. html页面证书过期,网页上的完全证书过期过失效怎么处理

热门文章

  1. tcp socket的发送与接收缓冲区
  2. 大数据之-Hadoop3.x_Yarn_容量调度器---大数据之hadoop3.x工作笔记0145
  3. Netty工作笔记0071---Protobuf传输多种类型
  4. STM32工作笔记0010---认识GPIO IO端口
  5. Swagger工作笔记001---Swagger2的使用
  6. 走进COM组件系列(二)
  7. linux底层文件io,学习Rust 文件与 IO
  8. mysql 逐行读取文件_PHP fgets()和fgetss():逐行读取文件
  9. docker源码编译 linux_oracle linux 6 docker 安装(包括编译git源码)
  10. java clone原理_cloneAble接口实现clone()原理