Linux系统Rsync数据同步工具

1.1什么Rsync?html

       Rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。
        Rsync 软件使用于/unix/linux/windows 等多种操做系统平台。
下面是官方的英文简单描述:rsync-a fast,versatile,remote(and local)file-copying tool
来自:http://www.samba.org/ftp/rsync.htmllinux


1.2 Rsync 简介
Rsync 英文全称为Remote synchronization 从软件的名称就能够看出来,Rsync 具备可使用本地
和远程两台主机直接的数据快速复制同步镜像、远程备份的功能,这个功能相似ssh 带的scp 命令,但又
优于scp 命令的功能,scp 每次都是全量及增量的复制数据,这又相似cp 命令,但一样也优于cp 命令,cp
每次都是全量拷贝,而Rsync 能够增量拷贝。
提示:
利用Rsync 还能够实现删除文件和目录的功能,这又至关于rm 命令!一个rsync 至关于scp,cp,rm,可是
还优于他们每一个命令redis


1.2.1 Rsync功能
主要做用:
在两台计算机之间进行数据同步
重要功能:
1. 若是是远程拷贝的话,至关于scp 功能,scp 就是加密的拷贝。
2. 若是是本地拷贝的话,至关于cp 命令
3. 若是是删除文件的话,至关于rm 命令
rsync 能够是一个网络服务port、socket(服务)在同步备份数据时,默认状况下,rsync 经过其独特的"quick check"算法,它仅同步大小或者最后修改时间发生变化的文件或目录,固然也能够根据权限,属主等属性的变化同步,但须要指定相应的参数,甚至能够实现只同步一个文件里有变化的内容部分,因此,能够实现快速的同步备份数据。
提示:
传统的cp,scp 工具拷贝每次均为完整拷贝,而rsync 除了能够完整拷贝外,还具有增量拷贝功能,所以,从同步数据的性能及效率上,rsync 工具更胜一筹。算法


1.2.2 Rsync 的特性
1. 支持拷贝特殊文件如连接文件,设备等。
2. 能够有排除指定文件或目录同步的功能,至关于打包命令tar 的排除功能。
3. 能够作到保持源文件或目录的权限、时间、软硬连接、属主、组等全部属性均不改变(-p)
4. 能够实现增量同步,即只同步发生变化的数据,所以数据传输效率很高,tar -N。
5. 可使用rcp,rsh,ssh 等方式来配合传输文件(Rsync 自己不对数据加密)
6. 能够经过socket(进程方式)传输文件和数据(服务器和客户端)
7. 支持匿名或认证(无需系统用户)的进程模式传输,能够实现方便安全的进行数据备份及镜像。vim


1.3 rsync 命令说明
提示:
rsync 命令是客户端命令
Rsync 参数:
参数 描述
-a 保持属性不变,-a --归档模式,表示以递归方式传输文件,并保持全部文件属性,等于-rtopgDl
-v 详细模式输出,传输时的进度等信息。
-z 传输时进行压缩提升传输效率
-e --rsh=COMMAND 使用的信道协议,指定替代rsh 的sheel 程序,设置传输隧道 如:ssh -p 22
-P --progress 显示同步的过程及传输时的进度等信息。
-r --recursive 对子目录以递归模式,即目录下的全部目录都一样传输,注意是小写r
-t --times 保持文件时间信息
-o --owner 保持文件属主信息
-p --perms 保持文件权限
-g --group 保持文件属组信息
-D --devices 保持设备文件信息
-l --links 保持软硬连接
排除参数:
--exclude=PATTERN 指定排除不须要传输的文件模式
--exclude-from=file (文件名所在的目录文件)
--exclude=abc 排除一个文件
--exclude={a,c} 排除多个文件
--compress-level=NUM 可按级别压缩windows


1.4 Rsync服务器配置(守护进程)工做模式
1. 四台服务器运行rsync --version 查看版本号 (CRT 交互窗口)
安全

[root@Rsync-SERVER-14 /]# rsync --version #查看rsync 版本号
rsync version 3.0.6 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.

2. 配置Rsync 服务文件(rsyncd.conf)
bash

[root@Rsync-SERVER-14 /]# rpm -qa |grep rsync #查看是否安装了rsync
rsync-3.0.6-12.el6.i686
[root@Rsync-SERVER-14 /]# touch /etc/rsyncd.conf #默认rsync 配置文件不存在须要手动建立
[root@Rsync-SERVER-14 /]# ls /etc/rsyncd.conf
/etc/rsyncd.conf
[root@Rsync-SERVER-14 /]# vim /etc/rsyncd.conf #编辑rsyncd.conf 文件添加内容
#Rsync server
#Created by Jonny 21:30 2015-10-28
##rsyncd.conf start ##
uid = rsync #客户端连到服务器用户具有什么权限,客户端就具有这个用户的权限
gid = rsync #客户端连到服务器组具有什么权限,客户端就具有这个组的权限
use chroot = no #当程序出现漏洞的时候,开启给一个空目录,出现漏洞的时候,把漏洞定向到空目
录
max connections = 2000 #客户端链接数,同时链接2000 个
timeout = 600 #超时时间,客户端连服务器600 秒都不作任何操做就会断掉链接
pid file = /var/run/rsyncd.pid #rsync 的进程号放/var/run/rsyncd.pid,好处是未来不用看进程直
接看pid 就能够管理rsync 服务
lock file = /var/run/rsyncd.lock #lock file 指定支持max connections 参数的锁文件,默认值是
/var/run/rsyncd.lock
ignore errors #忽略错误
read only = false #只读是假的,可读写 true(真)
list = false #列表是假,不能看服务器有什么true(真)
hosts allow = 192.168.1.0/24 #容许IP 段
hosts deny = 0.0.0.0/32 #阻止网段
auth users = rsync_backup #认证用户(虚拟用户)
secrets file = /etc/rsync.password #存放用户和密码的文件(格式 用户:密码)
######################################
[backup] #共享模块名称
comment = backup server by Jonny 21:35 2015-10-28 #注释说明
path = /backup #共享模块路径
更多的配置man rsyncd.conf

3. 启动rsync 服务
服务器

[root@Rsync-SERVER-14 /]# rsync –daemon #启动rsync 服务
[root@Rsync-SERVER-14 /]# ps -ef |grep rsync|grep -v grep #查看rsync 服务是否正常
root 3457 1 0 07:40 ? 00:00:00 rsync --daemon
[root@Rsync-SERVER-14 /]# netstat -lntp |grep rsync #查看rsync 的服务侦听状况
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
3457/rsync
tcp 0 0 :::873 :::* LISTEN
3457/rsync
[root@Rsync-SERVER-14 /]# lsof -i ":873" #根据端口号查看rsync 服务
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 3457 root 3u IPv4 18925 0t0 TCP *:rsync (LISTEN)
rsync 3457 root 5u IPv6 18926 0t0 TCP *:rsync (LISTEN)
[root@Rsync-SERVER-14 /]# ss -lntup |grep rsync #ss 也能够查看rsync 服务
tcp LISTEN 0 5 :::873 :::*
users:(("rsync",3457,5))
tcp LISTEN 0 5 *:873 *:*
users:(("rsync",3457,3))

4.建立Rsync用户
网络

[root@Rsync-SERVER-14 /]# useradd rsync -M -s /sbin/nologin #建立rsync 虚拟用户

5.建立共享目录

[root@Rsync-SERVER-14 /]# mkdir /backup #建立共享模块的目录

6.受权rsync用户

[root@Rsync-SERVER-14 /]# chown -R rsync /backup #设置/backup 目录属主为rsync
[root@Rsync-SERVER-14 /]# ls -ld /backup/ #检查是否设置好
drwxr-xr-x. 2 rsync root 4096 Oct 26 07:48 /backup/

7.建立密码文件

[root@Rsync-SERVER-14 /]# echo "rsync_backup:oldboy" >/etc/rsync.password  #建立密码文件
[root@Rsync-SERVER-14 /]# cat /etc/rsync.password        #检查是否建立好rsync_backup:oldboy
[root@Rsync-SERVER-14 /]# chmod 600 /etc/rsync.password  #由于是密码文件,全部设置权限600
[root@Rsync-SERVER-14 /]# ls -ld /etc/rsync.password     #检查是否设置好
-rw-------. 1 root root 510 Oct 26 07:19 /etc/rsync.password

1.5 Rsync客户端配置

1. 须要建立密码文件输入里面的密码须要跟服务器同样,由于当客户端链接服务器的时候,服务器会跟客户端要密码,要的就是跟服务器相同的密码。

[root@NFS-SERVER-11 ~]# echo "oldboy" >/etc/rsync.password
[root@NFS-SERVER-11 ~]# chmod 600 /etc/rsync.password

2. 客户端推送文件到服务器

提示:
推拉都是客户端操做的

[root@NFS-SERVER-11 /]# rsync -avzP /etc/hosts rsync_backup@192.168.1.14::backup
--password-file=/etc/rsync.password
sending incremental file list
hosts
158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 120 bytes received 27 bytes 294.00 bytes/sec
total size is 158 speedup is 1.07

3.Rsync服务器查看是否推送到/backup/

[root@Rsync-SERVER-14 /]# ls /backup/
11 hosts

4. 客户端向服务器拉取数据

[root@NFS-SERVER-11 ~]# rsync -avz rsync_backup@192.168.1.14::backup /tmp/
--password-file=/etc/rsync.password
receiving incremental file list
./
11
hosts
test/
test/hosts
sent 128 bytes received 410 bytes 1076.00 bytes/sec
total size is 316 speedup is 0.59
[root@NFS-SERVER-11 ~]# ls /tmp/
hosts
相关文章
相关标签/搜索