本篇博客 感谢老男孩老师教学 


在企业里面首先会先需要备份服务器,来备份数据,以防丢失。

在此,我们在这里介绍Rsync服务器(实现本地拷贝以及程拷贝

介绍:

  • Rsync 开源、快速、可实现全量(全部备份)及增量(差异式备份)的本地或程的数据同步。

  • 适用于Unix,Linux,Windows上。

  • 具有本地和程两台主机之间的数据快速复制同步镜像、程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量备份,但rsync可以增量拷贝(差异式备份)。

  • 具有本地主机的不同分区或目录之间全量及增量的复制数据,这功能类似cp命令,但cp不能实现增量拷贝。

  • 具有实现删除文件和目录的功能。->又相当于rm命令

  • 备份数据时,透过独特的"quick check"算法,仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据。

  • Centos5 rsync2.x 比对方法:把所有文件比对一遍后,在进行同步。

  • Centos6 rsync3.x 比对方法:一边比对差异,一边对差异的部分进行同步。

  • 总结:一个rsync相当于scp,cp,rm,且优于他们每一个命令!

特性:

  • 支持拷贝特殊文件如 链结文件、设备等。

  • 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能-X 

  • 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组 等所有属性均不改变-p

  • 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高,tar -N

  • 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)。

  • ****可以透过socket(进程方式)传输文件和数据(服务端和客户端)。

  • 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

  • 全网服务器数据备份解决方案提出及负责实施

    • 注意下方的例子,以后简历上面可以写!!

  1. 针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。

  2. 透过本地打包备份,然后rsync结合inotify应用把全网数据统一备份到一个固定的存储服务器,然后存储服务器上透过脚本检查并报警管理员备份结果。

  3. 定期将IDC机房的数据备份到公司的内部服务器,防止机房地震或火灾等问题导致数据丢失。


Rsync的工作方式:

主要有三种传输方式

rsync端口(873

Local:  rsync [OPTION...] SRC... [DEST]
Access via remote shell:
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
        
By: https://www.samba.org/ftp/rsync/rsync.html


Rsync本地模式实践:

[root@backup ~]# cp -a /etc/hosts /tmp/   (-a 保持属性)
[root@backup ~]# rsync -vzrtopg /etc/hosts /mnt/   (-v输出 可以看到过程, )
sending incremental file list
hosts
sent 185 bytes  received 31 bytes  432.00 bytes/sec
total size is 295  speedup is 1.37
如果我们要删除:
[root@backup ~]# rsync -avz --delete /etc/hosts /mnt/ 
sending incremental file list
sent 30 bytes  received 12 bytes  84.00 bytes/sec
total size is 295  speedup is 7.02
但..你会发现 /mnt/下文件还是存在!!!为什么? 
[root@backup ~]# ls -l /mnt/
total 4
-rw-r--r--. 1 root root 295 Oct  8 16:57 hosts
因为在这边的删除是属于同步的,原资料如果没有,我就删除,例子:
[root@backup ~]# mkdir /tmp1
[root@backup ~]# rsync -avz --delete /tmp1/ /mnt/                  
sending incremental file list
./
deleting hosts
sent 29 bytes  received 15 bytes  88.00 bytes/sec
total size is 0  speedup is 0.00
[root@backup ~]# ll /mnt/
total 0
----->因为我们新增一个空资料夹,所以利用上面这个命令时,便会同步到/mnt/下,
使他也为空资料夹(删除),这样会很容易导致数据丢失所以尽量不要使用--delete,
除非两个服务器是属于完全一样的状态,同步(源和目标保持一样同步的状态)。


Rsync命令同步参数:

  • -v --verbose 详细模式输出,传输时的进度等信息。

  • -z --compres 传输时进行压缩以提高传输率,--compress-level=NUM可按级别压缩。

  • -a --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopdD1

  • -r --recursive 对子目录以递归模式,即目录下的所有目录都同样传输,注意!!是小写r

  • -t --times 保持文件时间信息

  • -o --owner 保持文件属主信息

  • -p --perms 保持文件权限

  • -g --group 保持文件属组信息

  • -P --progress 显示同步的过程及传输时的进度等信息

  • -D --devices 保持设备文件信息

  • -l --links 保留软链接

  • --delete 让目标目录RSC和源目标数据DST一致

  • --exclude=PATTERN 指定排除不需要传输的文件模式(跟tar参数一样)

  • --exclude-from=file (文件名所在的目录文件)(跟tar参数一样)

  • --bwlimit=RATE limit socket I/O bandwidth
    案例: DBA做数据同步,导致用户无法访问网站:
    白天做数据备份,把整个带宽占满,资源耗尽。

-a 几乎等于-r,-t,-o,-p,-g,-P,-D,-l

常用的组合:

  • vzrtopg

  • avz

特别注意

1) rsync -azv /opt/ /tmp/

2) rsync -azv /opt /tmp/

第一行指令意思是仅把/opt/目录里面的内容同步过来,opt目录本身并没有同步!!

第二行指令意思则是把opt本身及其内部内容全部同步到/tmp/

只有一个/ 斜线 ,意思不同!!!!

使用端SSH通道实践:

借助ssh通道在不同主机之间传输数据

[root@backup ~]# rsync -avz /etc/hosts -e 'ssh -p 22' root@10.0.0.31:/mnt/
root@10.0.0.31's password: 
sending incremental file list
hosts
sent 185 bytes  received 31 bytes  61.71 bytes/sec
total size is 295  speedup is 1.37
我们切到10.0.0.31(nfs01虚拟机)里面看:
[root@nfs01 mnt]# ls 
hosts
在上面传输时,一开始会有点慢,这问题我们必须在对方(要同步过去的主机)上进行调整:
[root@nfs01 mnt]# vim /etc/ssh/sshd_config 
里面
 80 #GSSAPIAuthentication no   ----> # 去掉
 81 GSSAPIAuthentication yes   ----> 加上#
122 #UseDNS yes                ---->去掉#, yes改成no 
改完后一定要重启服务:
/etc/init.d/sshd restart



Rsync daemon 服务模式实践

以守护进程(socket)(吃运行的程序,sshd也算守护进程)的方式传输数据

监听的端口是873端口。

注意!!无论是实现推数据或拉数据的命令时,都是在客户端上运行。在服务器上运行是没用! 

部署前的准备工作:

  • 两台机器的环境(因为是clone的,都一样)
    第一台:10.0.0.41 (backup) 第二台:10.0.0.31 (nfs01)
    我们搭备份服务器是要搭在backup上面,因为是要接受其他台电脑传输资料过去(在其他电脑是透过命令去推送资料)

[root@nfs01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@nfs01 ~]# uname -m
x86_64
[root@nfs01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@nfs01 ~]# rsync --version
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, 64-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.
[root@nfs01 ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64


  • 服务器端配置:(在10.0.0.41 backup

默认的配置文件是/etc/rsyncd.conf (默认不存在,要自己新增!!!)

里面新增配置文件的内容:

#rsync_config_____________start
#created by oldboy 2017-10-09
##rsyncd.conf start ##
uid = rsync     (虚拟)用户id  远端的命令使用rsync访问共享目录
(用户有三种:超级用户、虚拟用户、普通用户 为什么要有虚拟用户?
因为文件和进程都需要满足一个属主的要求) 
gid = rsync     (进程对应的)用户组
use chroot = no     安全相关的
max connections = 200       最大连接数(有多少客户端可以同时连接服务器)
timeout = 300           超时时间
pid file = /var/run/rsyncd.pid      进程对应的进程号文件
lock file = /var/run/rsync.lock     锁文件(保持数据一制性)
log file = /var/log/rsyncd.log      日志文件
[backup]        模块名称
path = /backup      服务器端提供访问的目录
ignore errors           忽略错误
read only = false   可写
list = false            不能列表
hosts allow = 172.16.1.0/24     允许哪些机器过来连
hosts deny = 0.0.0.0/32             拒绝哪些用户,不能连线(现在的状态是都可以连线)(跟上面的hosts allow 会重叠,所以)
auth users = rsync_backup           虚拟用户
secrets file = /etc/rsync.password      虚拟帐号对应的用户和密码
#rsync_config_________end


操作:

[root@backup ~]# useradd rsync -s /sbin/nologin  -M   (-s /sbin/nologin不需要登录  -M 不需要建家目录)
[root@backup ~]# tail -l /etc/passwd
rsync:x:501:501::/home/rsync:/sbin/nologin
[root@backup ~]# rsync --daemon    (启动服务)
[root@backup ~]# ps -ef | grep rsync | grep -v grep   (查看服务有没有启动,grep -v grep 排除自己的grep )  
root       1434      1  0 09:03 ?        00:00:00 rsync --daemon    (对应的用户还是root )
[root@backup ~]# mkdir /backup    (创建/backup目录)
[root@backup ~]# chown rsync.rsync /backup/    (更改读写权限 属组是rsync!!)
[root@backup ~]# ls -ld /backup/
drwxr-xr-x. 2 rsync rsync 4096 Oct  9 09:06 /backup/
[root@backup ~]# vim /etc/rsync.password   (新增帐号密码文件)
[root@backup ~]# cat /etc/rsync.password 
rsync_backup:oldboy    (格式是-->用户:密码)
[root@backup ~]# ll /etc/rsync.password -l
-rw-r--r--. 1 root root 20 Oct  9 09:13 /etc/rsync.password    (这样其他用户可以读,不够安全!!)
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password -l    
-rw-------. 1 root root 20 Oct  9 09:13 /etc/rsync.password
这样,服务器端基本设置大致上完成了。
查看运行端口状态:
[root@backup ~]# lsof -i :873 
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1434 root    4u  IPv4  14349      0t0  TCP *:rsync (LISTEN)
rsync   1434 root    5u  IPv6  14350      0t0  TCP *:rsync (LISTEN)
[root@backup ~]# netstat -tunlp | grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1434/rsync          
tcp        0


  • 小结:

    • 一步一步完成服务器基本操作:

  1. 查看rsync安装包
    rpm -qa rsync

  2. 添加rsync服务的用户,管理本地目录的 useradd -s /sbin/nologin -M rsync

  3. 生成rsyncd.conf 配置文件 vi /etc/rsyncd.conf

  4. 根据rsyncd.confauth users 配置帐户,程连接的,并根据secrets file参数生成密码文件
    echo "rsync_backup:oldboy" >/etc/rsync.password

  5. 为密码文件配置权限
    chmod 600 /etc/rsync.password
    ls -l /etc/rsync.password

  6. 创建共享的目录并授权rsync服务管理 mkdir /backup -p
    chown -R rsync.rsync /backup
    如果没有/backup目录,就会chdir failed

  7. 启动rsync服务并检查 rsync --daemon
    ps -ef | grep rsync | grep -v grep
    lsof -i :873

  8. 加入开机自起动 echo "/usr/bin/rsync --daemon" >>/etc/rc.local tail -1 /etc/rc.local

  9. 排错: 1)输出
    2)日志 tail /var/log/rsync.log

  • 客户端配置:(在10.0.0.31 nfs01

[root@nfs01 ~]# vim /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password 
oldboy     ---->(注意到了吗?这边只有密码!!!!)
[root@nfs01 ~]# chmod 600 /etc/rsync.password    (因为是密码文件,所以要改权限,较安全)
[root@nfs01 ~]# ls -l /etc/rsync.password 
-rw-------. 1 root root 7 Oct  9 09:46 /etc/rsync.password
[root@nfs01 ~]# mkdir -p /backup   (打包、推送、删除,如果我们要推送打包时,我们可以先打包到这个目录下,之后统一用rsync推送信息)
我们接下来来尝试看看备份推送资讯
[root@nfs01 ~]# cd /backup
[root@nfs01 backup]# touch stu{01..100}
[root@nfs01 backup]# ls 
stu001  stu011  stu021  stu031  stu041  stu051  stu061  stu071  stu081  stu091
stu002  stu012  stu022  stu032  stu042  stu052  stu062  stu072  stu082  stu092
stu003  stu013  stu023  stu033  stu043  stu053  stu063  stu073  stu083  stu093
stu004  stu014  stu024  stu034  stu044  stu054  stu064  stu074  stu084  stu094
stu005  stu015  stu025  stu035  stu045  stu055  stu065  stu075  stu085  stu095
stu006  stu016  stu026  stu036  stu046  stu056  stu066  stu076  stu086  stu096
stu007  stu017  stu027  stu037  stu047  stu057  stu067  stu077  stu087  stu097
stu008  stu018  stu028  stu038  stu048  stu058  stu068  stu078  stu088  stu098
stu009  stu019  stu029  stu039  stu049  stu059  stu069  stu079  stu089  stu099
stu010  stu020  stu030  stu040  stu050  stu060  stu070  stu080  stu090  stu100
PUSH 方法1: rsync [OPTION...] SRC... [USER@]HOST::DEST
后半段--password-file=  可以在使用命令时,不提示输入密码,但必须要在之前先将/etc/rsync.password建立好!     
[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
stu003
stu004
stu005
stu006
stu007
stu008
stu009
....不全部列出
stu099
stu100
sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00     ----> (不能有error 这样就是成功了!!)
PUSH 方法2:rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
[root@nfs01 backup]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
...不全部列出
stu100
sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00


  • 小结:

    • 一步一步完成客户端基本操作:

  1. 生成连接服务器需要的密码文件
    echo "oldboy" >/etc/rsync.password
    cat /etc/rsync.password

  2. 为密码文件配置权限
    chmod 600 /etc/rsync.password
    ls -l /etc/rsync.password

  3. 同步文件:(文件路径跟ip 请依照当时状况配置)
    推送:
    (1) rsync -avz /tmp/ rsync backup@10.0.0.8::oldboy --password-file=/etc/rsync.password
    (2) rsync -avz /tmp/ rsync://rsync backup@10.0.0.8/backup/ --password-file=/etc/rsync.password
    拉取:
    (1) rsync -avz rsync backup@10.0.0.8::oldboy /tmp/ --password-file=/etc/rsync.password
    (2) rsync -avz rsync://rsync backup@10.0.0.8/backup/ /tmp/ --password-file=/etc/rsync.password
    上述的backup是模块名,不是路径!!!

Rsync 服务故障模拟:

  • 1:(服务端问题)

[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]


            问题:服务端没有backup资料夹 

            解决:在服务器端新增/backup资料夹

  • 2:(服务端问题)

客户端push资料时,出现这样的问题:

rsync: mkstemp ".stu001.kksG0b" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu002.jiYwe9" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu003.Gynos6" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu004.nkVhG3" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu005.c63bU0" (in backup) failed: Permission denied (13)
rsync: mkstemp ".stu006.bbM67X" (in backup) failed: Permission denied (13)
sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

         问题:权限不够

[root@backup ~]# ls -l /backup/ -d
drwxr-xr-x. 2 root root 4096 Oct  9 14:05 /backup/


        解决:

在服务器端下:

[root@backup ~]# chown -R rsync.rsync /backup/



  • 3:(服务端问题)

[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]


        问题:服务器端不可用的uid 

        解决:新增rsync用户,不添加家目录

[root@backup ~]# useradd rsync -s /sbin/nologin -M
Creating mailbox file: File exists


  • 4:(客户端问题)

[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]


        问题:vim /etc/rsync.password 路径、密码 有可能是客户端或是服务端

        我们可以去看看日志排错

2017/10/09 14:16:09 [2073] connect from nfs01 (172.16.1.31)
2017/10/09 14:16:09 [2073] auth failed on module backup from nfs01 (172.16.1.31): password mismatch


---->密码问题。

解决: 去客户端查看/etc/rsync.password 检查内容。

Rsync服务模式增加多模块实战

  • 1 用不同的模块传输

首先,将原配置文件备份(好习惯)
[root@backup ~]# cp /etc/rsync.password{,.bak}     ---->这样会维持源文件,并另外新增备份文件
[root@backup ~]# cp /etc/rsyncd.conf{,.bak}
[root@backup ~]# ls -l /etc/ | grep rsyncd
-rw-r--r--.  1 root root    464 Oct  9 08:48 rsyncd.conf
-rw-r--r--.  1 root root    464 Oct 10 10:00 rsyncd.conf.bak
[root@backup ~]# mkdir /oldboy
[root@backup ~]# chown -R rsync.rsync /oldboy/
[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/oldboy/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
stu003
stu004
....不全部列出
stu099
stu100
sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00


  • 2 用不同的密码、模块传输

[root@backup oldboy]# cp /etc/rsync.password{,.oldboy}
[root@backup oldboy]# vim /etc/rsync.password.oldboy
[root@backup oldboy]# cat /etc/rsync.password.oldboy 
test:oldboy
[root@backup oldboy]# vim /etc/rsyncd.conf 
[root@backup ~]# cat /etc/rsyncd.conf
#rsync_config_____________start
#created by oldboy 2017-10-09
##rsyncd.conf start ##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /backup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[oldboy]
path = /oldboy
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
#auth users = rsync_backup
#secrets file = /etc/rsync.password
#rsync_config_________end 
切换到10.0.0.31(nfs)
[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/oldboy/ --password-file=/etc/rsync.password
sending incremental file list
./
stu001
stu002
...不全部列出
stu099
stu100
sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00
如果要用不同密码:
[root@nfs01 ~]# rsync -avz /backup/ rsync://rsync_test@172.16.1.41/oldboy/ --password-file=/etc/rsync.password  
sending incremental file list
./
stu001
stu002
....
stu099
stu100
sent 4426 bytes  received 1911 bytes  12674.00 bytes/sec
total size is 0  speedup is 0.00


服务模式排除及无差异同步实践

  • 我们在服务器端清空/backup/里面的资料夹,并新增一些资料,我们要在客户端拉取服务器端的资料。

[root@backup backup]# rm -f *
[root@backup backup]# touch {a..g}
[root@backup backup]# ls
a  b  c  d  e  f  g


客户端:

[root@nfs01 backup]# rsync -avz rsync_backup@172.16.1.41::backup/ /backup/ --password-file=/etc/rsync.password
receiving incremental file list
./
a
b
c
d
e
f
g
sent 200 bytes  received 412 bytes  1224.00 bytes/sec
total size is 0  speedup is 0.00


  • 排除推送:在上例的基础下,我们把服务器端的/backup/里面的资料清空,从客户端将刚刚同步过去的资料同步过去(排除某个资料,不进行同步)

[root@backup backup]# rm -f *
切换到10.0.0.31(nfs)推送资料,并排除某一个档案
[root@nfs01 backup]# rsync -avz --exclude=a /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
./
b
c
d
e
f
g
sent 285 bytes  received 125 bytes  820.00 bytes/sec
total size is 0  speedup is 0.00
回到服务器端:
[root@backup backup]# ls
b  c  d  e  f  g    ---->里面没有a,因为被排除同步了。
**若要排除多个同步有几种方式:
[root@nfs01 backup]# rsync -avz --exclude={a,b} /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password                      
sending incremental file list
./
c
d
e
f
g
sent 243 bytes  received 106 bytes  698.00 bytes/sec
total size is 0  speedup is 0.00
如果是连续的:
rsync -avz --exclude={a..g} /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password


文件排除:

rsync -avz --exclude-from=paichu.log /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

拉取和推送都可以, 也可以在服务端排除,配置文件里面的参数。 exclude=a c b d 

  • 无差异同步 --delete 视频网站,视频推到服务器上线发布,本地/backup只有当天发布的内容,服务器上确有以前的所有文件,就执行下面的命令,导致服务器端删除以前所有,只剩下当天的了。 相当于rm - rf /backup

rsync -avz --delete /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

所以要谨慎使用--delete 

  • 限速传递

[root@nfs01 backup]# rsync -avz --bwlimit=10 /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password  
sending incremental file list
./
a
b
c
d
e
f
g
test1
sent 130907 bytes  received 163 bytes  9039.31 bytes/sec
total size is 134217728  speedup is 1024.02


Rsync三种工作模式

  • 1.本地模式 local:rsync (cp,rm)

  • 2.通道模式 rsync -avz -e 'ssh -p 22' /etc root@10.0.0.142:/tmp
    一般配合ssh key 免密钥传输,结合定时任务

  • 3.daemon模式
    内网不需要,加密性能有损失
    rsync + ***(pptp,open***,ipsec)

Rsync优缺点

  • 比较

    • 优点

    • 缺点

  1. 大量小文件时候同步时,比对时间比较长,有的时候,rsync进程可能会停止。

  2. 同步大文件,10G这样的大文件有时也会问题,中断。未完整同步前,是隐藏文件,可透过续传等参数实现传输 一次性程拷贝可以用scp

  1. 增量备份,支持socketdaemon),集中备份(支持推拉,都是以客户端为参照物)

  2. SHELL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用***服务或ipsec服务。