Linux Rsync文件同步备份

一、rsync介绍

    Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。 Rsync 本来是用以取代 rcp 的一个工具,它当前由  rsync.samba.org 维护。 Rsync 使用所谓的“ Rsync 演算法 ”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server ,一个 Rsync server 可同时备份多个 client 的数据;也可以多个 Rsync server 备份一个 client 的数据。

  Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。 Rsync server 会打开一个 873 的服务通道 (port) ,等待对方 Rsync 连接。连接时, Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

  Rsync 支持大多数的类 Unix 系统,无论是 Linux 、 Solaris 还是 BSD 上都经过了良好的测试。此外,它在 windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS 。

  Rsync 的基本特点如下:

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

  2. 可以很容易做到保持原来文件的权限、时间、软硬链接等;

  3. 无须特殊权限即可安装;

  4. 优化的流程,文件传输效率高;

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

     6. 支持匿名传输。

二、rsync 的命令格式可以为以下六种:

  rsync [OPTION]... SRC DEST

  rsync [OPTION]... SRC [USER@]HOST:DEST

  rsync [OPTION]... [USER@]HOST:SRC DEST

  rsync [OPTION]... [USER@]HOST::SRC DEST

  rsync [OPTION]... SRC [USER@]HOST::DEST

  rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

  对应于以上六种命令格式, rsync 有六种不同的工作模式:

  1) 拷贝本地文件。当 SRC 和 DES 路径信息都不包含有单个冒号 ":" 分隔符时就启动这种工作模式。

  2) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将本地机器的内容拷贝到远程机器。当 DST 路径地址包含单个冒号 ":" 分隔符时启动该模式。

  3) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将远程机器的内容拷贝到本地机器。当 SRC 地址路径包含单个冒号 ":" 分隔符时启动该模式。

  4) 从远程 rsync 服务器中拷贝文件到本地机。当 SRC 路径信息包含 "::" 分隔符时启动该模式。

  5) 从本地机器拷贝文件到远程 rsync 服务器中。当 DST 路径信息包含 "::" 分隔符时启动该模式。

     6) 列远程机的文件列表。这类似于 rsync 传输,不过只要在命令中省略掉本地机信息即可。

三、实例介绍

[backup@backup /]#/usr/bin/rsync -vzrltogp --progress --delete [email protected]::attachment  /usr/local/apache/htdocs/pub/html/ --password-file=/etc/rsync.scrt

备注:attachment是在/etc/rsyncd.conf中配置,后面有详细介绍

上面这个命令行中-vzrtopg代表的意思是:

-v表示verbose(详细)

-z表示zip(压缩) 

-r表示recursive(递归目录) 

-topg是保持文件原有属性如o=owner(属主)、t=times(时间)、p=perms(权限)、g=group(组)的参数 -H表示保持硬连接 

-l:保留软链结 

-u:表示只更新源文件比目标时间新的文件 

--progress是指显示出详细的进度情况 

--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。

[email protected]::attachment 是表示对服务器x.x.x.168中的attachment模块进行备份,登录帐号是user --password-file = /etc/rsync.scrt来指定密码文件,这里需要注意的是这份密码文件权限属性要设得只有属主可读(权限为600),属主为正在运行此命令的用户。

-a:(-a, --archive equivalent to -rlptgoD)以archive模式操作,复制目录、符号连接在这里面

 

log file = /var/log/rsync/rsyncd.log  #日志记录文件

motd file = /var/log/rsync/rsyncd.motd  #欢迎消息

strict modes =yes         #是否检查口令文件的权限

查看rsync的配置文件rsyncd.conf

[root@auc-test2 ~]# cat /etc/rsyncd.conf

[attachment]           # 指定认证的备份模块名 

path = /www/htdocs/pub/attachment/   # 需要备份的目录

comment = BACKUP attachment           # 注释 

ignore errors              # 忽略一些无关的IO错误 

read only = false          # 设置为非只读,即可以传至服务器的相应目录。

list = false                # 不允许列文件 

#exclude = test/ test.php      #设置不同步的目录或文件用空格隔开 

#hosts allow = 210.51.0.80     #允许连接服务器的主机IP地址,如果多个ip则用空格隔开

#hosts deny = 0.0.0.0/0.0.0.0         #禁止连接服务器的主机IP地址,也可为*,表示所有。

auth users = msyn                     # 认证的用户名,如果没有这行,则表明是匿名 secrets file = /etc/rsyncd.scrt      # 认证文件名,用来存放密码  

[98htdocs] 

uid = nobody gid = nobody 

path = /www/htdocs/ #ignore errors read only = true 

 

list = true 

#hosts allow = 210.51.0.98

#hosts deny = 202.108.211.38

#hosts deny = 0.0.0.0/0.0.0.0

auth users = msyn,myname2 

secrets file = /etc/rsyncd.scrt 

========================================================== 

这里分别定义了[attachment]、[98htdocs],分别对应于二个需要备份的目树。二个模块授权的备份用户分别为msyn,msyn,98syn,用户信息保存在文件 /etc/rsyncd.secrets,其内容如下:

[root@auc-test2 ~]# cat /etc/rsyncd.secrets

rsync:123456

或者

[root@auc-test2 ~]# cat /etc/rsync.secrets

123456

注意:该文件只能是root用户可读写的,注意,出于安全目的,这个文件的属性必需是只有属主可读,否则rsync将拒绝运行。 

我们可以设置它的属性为600: 

[root@www /etc]# chmod 600 /etc/rsyncd.secrets  

这些文件配置完毕以后,就需要在主服务器上启动rsyncd服务: 

[root@www /etc]# /usr/local/bin/rsync --daemon 

执行完毕上面的命令后,rsync即可启动。rsync默认服务端口为873,服务器在该端口接收客户的匿名或者认证方式的备份请求。

猜你喜欢

转载自hbiao68.iteye.com/blog/2079625