实践记录之-Rsync镜像备份

本文参考原博主:http://shitouququ.blog.51cto.com 的博文进行实践.在此谢过.


RSYNC简介:

    Rsync (remote sync)是一款开源、快速,多功能、可实现增量的本地或远程数据镜像同步备份优秀工具。它可通过 LAN/WAN 快速同步多台主机间的文件。Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护。Rsync 使用所谓的“Rsync演算法”来使本地和远程主机之间的文件达到同步,该算法只传送两个文件中的不同部分,而不是每次都整份传送,因此速度相当快。

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

 

RSYNC的特性:

1、支持拷贝特殊文件如链接、设备等。

2、可以有排除制定文件或目录同步的功能,相当于打包命令tar。

3、可以做到保持原来文件或目录的权限、时间、软硬连接等所有属性均不改变。

4、可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。

5、可以使用rcp,rsh,ssh等方式配合传输文件,也可以通过直接的socket连接。

6、支持匿名的或认证的进程模式传输,方便进行数据备份及镜像

7、优化的流程,文件传输效率高

 

RSYNC工作模式:

Rsync有四种工作模式,具体如下:

1、列表模式

      和ls -l相似,负责列出源的内容。不仅可以看本地还可以看远端。

2、shell模式,也称为本地模式

      和cp相似,本地拷贝文件

3、远程shell模式,可以通过通过rcp,ssh等通道传输

      和rcp相似,不过可以实现增量备份,并且能够通过安全的ssh方式进行数据传输。

4、服务器模式

      在这种模式下,rsync 守护进程在一台机器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库


安装rsync

先检查系统有没有安装:  rpm -qa rsync

如有返回,则系统已经安装过.

安装rsync有两种方式 .一种是yum安装,另一种是编译安装

yum安装:  

yum install -y rsync

编译安装:

 #安装GCC和库文件: 
 yum install -y kernel-headers glibc-headers glibc-devel libgomp gcc  gcc-c++ 
 #安装rsync
  wget  http://rsync.samba.org/ftp/rsync/rsync-3.1.1.tar.gz 
  tar zxvf rsync-3.1.1.tar.gz 
  cd rsync-3.1.1 
  ./configure --prefix=/usr/local/rsync
   make && make install

1、列表模式

     Rsync的列表模式,即等同于在实现 ls -l 的功能。我们可以通过分别执行rsync和ls命令来观察区别。

[root@localhost /]# rsync /usr/
drwxr-xr-x        4096 2014/07/10 10:46:05 .
lrwxrwxrwx          10 2014/07/10 10:46:05 tmp
dr-xr-xr-x       12288 2014/07/11 11:18:17 bin
drwxr-xr-x        4096 2011/09/23 19:50:20 etc
drwxr-xr-x        4096 2011/09/23 19:50:20 games
drwxr-xr-x        4096 2014/07/10 10:47:29 include
dr-xr-xr-x        4096 2014/07/10 10:47:49 lib
dr-xr-xr-x       12288 2014/07/11 11:18:17 lib64
drwxr-xr-x        4096 2014/07/10 10:50:37 libexec
drwxr-xr-x        4096 2014/07/10 10:46:05 local
dr-xr-xr-x        4096 2014/07/10 15:25:46 sbin
drwxr-xr-x        4096 2014/07/10 10:50:36 share
drwxr-xr-x        4096 2014/07/10 10:46:05 src
[root@localhost /]# ll /usr/
total 60
dr-xr-xr-x.  2 root root 12288 Jul 11 11:18 bin
drwxr-xr-x.  2 root root  4096 Sep 23  2011 etc
drwxr-xr-x.  2 root root  4096 Sep 23  2011 games
drwxr-xr-x.  3 root root  4096 Jul 10 10:47 include
dr-xr-xr-x.  9 root root  4096 Jul 10 10:47 lib
dr-xr-xr-x. 21 root root 12288 Jul 11 11:18 lib64
drwxr-xr-x.  9 root root  4096 Jul 10 10:50 libexec
drwxr-xr-x. 12 root root  4096 Jul 10 10:46 local
dr-xr-xr-x.  2 root root  4096 Jul 10 15:25 sbin
drwxr-xr-x. 55 root root  4096 Jul 10 10:50 share
drwxr-xr-x.  4 root root  4096 Jul 10 10:46 src
lrwxrwxrwx.  1 root root    10 Jul 10 10:46 tmp -> ../var/tmp
[root@localhost /]# ls -l /usr/
total 60
dr-xr-xr-x.  2 root root 12288 Jul 11 11:18 bin
drwxr-xr-x.  2 root root  4096 Sep 23  2011 etc
drwxr-xr-x.  2 root root  4096 Sep 23  2011 games
drwxr-xr-x.  3 root root  4096 Jul 10 10:47 include
dr-xr-xr-x.  9 root root  4096 Jul 10 10:47 lib
dr-xr-xr-x. 21 root root 12288 Jul 11 11:18 lib64
drwxr-xr-x.  9 root root  4096 Jul 10 10:50 libexec
drwxr-xr-x. 12 root root  4096 Jul 10 10:46 local
dr-xr-xr-x.  2 root root  4096 Jul 10 15:25 sbin
drwxr-xr-x. 55 root root  4096 Jul 10 10:50 share
drwxr-xr-x.  4 root root  4096 Jul 10 10:46 src
lrwxrwxrwx.  1 root root    10 Jul 10 10:46 tmp -> ../var/tmp
[root@localhost /]#

     另外,rsync的列表模式是支持对远端的目录进行查看的,而ls -l是不具备这个功能的。   


2、Shell模式

首先来看下 RSYNC 的命令语法:

rsync [OPTION]... SRC [SRC]... DEST

rsync 参数详解:

-v, --verbose 详细模式输出 

-q, --quiet 精简输出模式 

-c, --checksum 打开校验开关,强制对文件传输进行校验 

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

-r, --recursive 对子目录以递归模式处理 

-R, --relative 使用相对路径信息               

    rsync foo/bar/foo.c remote:/tmp/

    Rsync 参数在/tmp目录下创建foo.c文件,而如果使用-R参数:

    rsync -R foo/bar/foo.c remote:/tmp/

    Rsync 参数会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。

-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filen    ame。可以使用--suffix选项来指定不同的备份文件前缀。 

--backup-dir 将备份文件(如~filename)存放在在目录下。 

-suffix=SUFFIX 定义备份文件前缀 

-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不    覆盖更新的文件) 

--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结 

-l, --links 保留软链结 

-L, --copy-links 想对待常规文件一样处理软链结 

--safe-links 忽略指向SRC路径目录树以外的链结 

-H, --hard-links 保留硬链结 

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

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

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

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

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

-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间 

-n, --dry-run现实哪些文件将被传输 

-W, --whole-file 拷贝文件,不进行增量检测 

-x, --one-file-system 不要跨越文件系统边界 

-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节 

-e, --rsh=COMMAND 指定替代rsh的shell程序 

--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息 

-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 

--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 

--delete 删除那些DST中SRC没有的文件 

--delete-excluded 同样删除接收端那些被该选项指定排除的文件 

--delete-after 传输结束以后再删除 

--ignore-errors 及时出现IO错误也进行删除 

--max-delete=NUM 最多删除NUM个文件 

--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 

--force 强制删除目录,即使不为空 

--numeric-ids 不将数字的用户和组ID匹配为用户名和组名 

--timeout=TIME IP超时时间,单位为秒 

-I, --ignore-times 不跳过那些有同样的时间和长度的文件 

--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间 

--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0 

-T --temp-dir=DIR 在DIR中创建临时文件 

--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份 

-P 等同于 --partial 

--progress 显示备份过程 

-z, --compress 对备份的文件在传输时进行压缩处理 

--exclude=PATTERN 指定排除不需要传输的文件模式 

--include=PATTERN 指定不排除而需要传输的文件模式 

--exclude-from=FILE 排除FILE中指定模式的文件 

--include-from=FILE 不排除FILE指定模式匹配的文件 

--version 打印版本信息 

--address 绑定到特定的地址 

--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件 

--port=PORT 指定其他的rsync服务端口 

--blocking-io 对远程shell使用阻塞IO 

-stats 给出某些文件的传输状态 

--progress 在传输时现实传输过程 

--log-format=FORMAT 指定日志文件格式 

--password-file=FILE 从FILE中得到密码 

--bwlimit=KBPS 限制I/O带宽,KBytes per second 


    需要注意的是:rsync命令在使用中,如果源参数的末尾有斜线,就会复制指定目录内的内容,而不复制目录本身;如果没有斜线,则会复制目录本身。目标参数的末尾有没有斜线都不影响。

[root@localhost rsync]# rsync -a test1/ test2/
[root@localhost rsync]# ll test2/
-rwxrwxrwx 1 root root 0 Jul 10 15:21 123
-rwxrwxrwx 1 root root 0 Jul 10 15:20 test
[root@localhost rsync]# rsync -a test1 test2/
[root@localhost rsync]# ll test2/
total 4
drwxr-xr-x 2 root root 4096 Jul 10 15:21 test1

    

3、远程shell模式

远程shell模式的话,和shell模式是异曲同工。只不过,因为是要通过远程,因此我们需要指定远程主机的IP,如果采用ssh我们还需要指定ssh的端口等等。

远程shell模式,常规分为如下两种情况,其语法分别为:


拉取pull :rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
推送push:rsync [OPTION]... [USER@]HOST:SRC [DEST]



    下面为大家拆解一下命令:


1)Rsync为同步的命令
2)[OPTION]... 为同步时的参数选项
3)[USER@]HOST... 为Rsync同步的远程的连接用户和主机地址
4)SRC为源,即需要拷贝的分区、文件或目录等,和HOST之间用一个冒号连接
5)[DEST]为目地分区、文件或目录等


      大家可以发现,拉取和推送,不一样的地方就是源和目标换了位置。其中拉取,表示从远端主机把数据同步到执行命令的本地主机相应目录。(需要注意,拉取的话,远端主机上一定要安装rsync,不然会拉取失败)。推送,表示从本地主机执行命令把本地的数据同步到远端主机指定目录下

远程模式案例:

将192.168.1.34这台服务器的/etc 目录备份到192.168.1.35 这台服务器的/opt/backup 目录下.

具体实现如下 :

在服务器192.168.1.35上执行命令:

# rsync -vzrtopg --progress -e 'ssh -p 22' [email protected]:/etc /opt/backup/
语法说明:
1)-vzrtopg 相当于上文的-avz,表示同步时文件和目录属性不变。
2)--progress 显示同步的过程,可以用-p替换
3)-e ‘ssh -p 22’,表示通过ssh的通道传输数据。如果ssh是默认的22号端口,此处的-p 22可省略。
4) [email protected]:/etc 远程的主机用户,地址,路径
5)/backup本地(192.168.1.35)的路径

    推送实例:

 在服务器192.168.1.34上执行命令:

#rsync -avz --progress -e 'ssh -p 22' /opt/backup/ [email protected]:/opt

4、服务模式

RSYNC的服务模式,部署时分为rsync的服务端和rsync的客户端。需要注意的是,rsync 的服务端和客户端都是一个软件包,如果你启用了 rsync 的服务模式,则该主机就变成 rsync 服务器。因此我们需要将 rsync 分别安装于服务端和客户端,服务端和客户端使用同一个 rsync 软件包来实现远程镜像和定期同步更新。

rsync 服务端可同时备份多个客户端的数据,多个服务端备份一个客户端的数据。 rsync 默认端口为 873,服务器在该端口接收客户的匿名或者认证方式的备份请求。

rsync 服务端在使用之前需要进行必要的配置,其配置文件为 /etc/rsyncd.conf,该文件默认没有,需要自己手动创建。Rsync服务端通过/etc/rsyncd.conf进行认证、访问、日志记录等控制,该配置文件包括全局参数、模块参数等设置。

rsyncd.conf 文件中 [module] 之前的所有参数为全局参数,也可以在全局参数部分定义模块参数。在这种情况下该参数的值就是所有模块的默认值。全局参数设置程序使用的端口号,指定消息文件、日志文件 pid 文件以及发送日志消息的级别。模块参数主要定义服务端哪个目录需要被同步。用户可根据不同的需要指定多个模块,每个模块对应需要备份的一个目录树,即若有 N 个需要备份的目录树,则需要 N 个模块与之对应。模块中可以定义许多参数。下面,我们拿出来一个rsyncd.conf文件,来给大家做详解:

uid = rsync    # 指定的模块传输文件时所用的用户身份
gid = rsync    # 指定的site模块传输文件时所用的用户组身份
port=873       # 默认端口
use chroot = no # 默认为true,修改为no,增加对目录文件软连接的备份
max connections = 200  # 指定最大并发连接数以保护服务器,超过限制的连接请求将被告知随后再试。默认值为 0,即没有限制
timeout = 300          # 服务器会话的超时时间
pid file = /var/run/rsyncd.pid   # 进程启动后,进程号存放路径
lock file = /var/run/rsyncd.lock # 服务启动、停止会用到锁文件
log file = /var/log/rsyncd.log   # 指定日志文件的路径
Log fromat = %h %o %f %l %b      # 指定日志记录的格式
motd file = /etc/rsyncd.motd     # 登陆消息提示文件,可以不配置。默认为空。
[test]         # 模块名称,名称可以任意写,不过一般是以路径命名,最好见名意
Comment = test # 模块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义
path=/test/    # 指定供备份的目录路径,必须指定该参数。该目录路径是rsync服务端的一个路径,提供给客户端上传或下载
ignore erros   # 忽略错误
read only = false  # 设定是否允许客户上载文件。若为 true 任何上载请求均会失败,若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。
write only 设定是否允许客户下载文件。若为 true 任何下载请求均会失败,默认值为 false 。
list = false       # 设定当客户请求可以使用的模块列表时,是否列出该模块。若为 false,则创建隐藏的模块。默认值为 true
hosts allow=192.168.137.0/24  # 指定允许客户连接的 IP 地址。可以为单个 IP 地址或整个网段。多个 IP 或网段需要以空格隔开。默认是允许所有主机连接。
hosts deny=*   # 指定拒绝连接的客户IP地址,设置方式和hosts allow相同。
Dont commpress # 指定不进行压缩处理即可传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
auth users = rsync_backup  # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户不一定是客户端存在的用户。如果"auth users"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块 ( 也就是匿名方式 )。
secrets file = /etc/rsync.password # 虚拟用户的密码文件
exclude = common/   # 用来指定多个由空格隔开的多个文件或目录 ( 相对路径 ),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 --exclude 参数。一个模块只能指定一个 exclude 选项。但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过 exclude 列表,如果希望确保特定的文件不能被访问,那就最好结合 uid/gid 选项一起使用。
pre-xfer exec, post-xfer exec  # 设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作

        下面,就配置rsync服务端跟客户端:

        环境:   rsync_server :192.168.1.34     centos6.5

                   rsync_client:192.168.1.35       centos6.5

一.RSYNC 服务端部署:    

1、安装rsync,并且配置服务端主配置文件

[root@localhost ~]# yum install rsync -y
[root@localhost ~]# vim /etc/rsyncd.conf
#注:yum安装后/etc目录下没有rsyncd.conf ,我们就手动添加它!
uid = root
gid = root
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
ignore errors
read only = false
list = false
hosts allow = 192.168.1.0/24
hosts deny = *
auth users = rsync
secrets file = /etc/rsync.password
[sunsky]
path = /test


2、创建 rsync.password 作为用户密码文件

[root@localhost rsync]# touch /etc/rsync.password
[root@localhost rsync]# chmod 600 /etc/rsync.password 
[root@localhost rsync]# vi /etc/rsync.password 
[root@localhost rsync]# cat /etc/rsync.password 
rsync:123456

3.创建模块中指定的文件

[root@localhost ~]# mkdir /test
[root@localhost ~]# chown root:root /test   #更改目录的权限为rsyncd.conf中uid和gid指定属主和属组

4、以守护进程方式启动 rsync

        Rsync服务端的启动分2种,一种是交给 xinetd 去管理,另外就是自己手动配置守护进程。

        A、手动配置rsync守护进程

    [root@localhost ~]#/usr/bin/rsync --daemon  --config=/etc/rsyncd.conf  
    #注意如果你的rsyncd.conf文件在/etc/目录下,就不需要再用--config去指定了。--daemon是以守护进程的方式启动

    我们可以将上面的命令写入 /etc/rc.local 中,这样当系统启动时,就会自动以守护进程的方式去运行 rsync。

补充:

          重启rsync的组合命令

[root@localhost ~]# pkill rsync  #关闭rsync服务
[root@localhost ~]# rsync --daemon #启动rsync服务
[root@localhost ~]# ps -ef | grep rsync   #检查是否启动

        B、交由xinetd管理

        [root@localhost ~]# yum install xinetd  #安装xinetd
[root@localhost ~]# vim /etc/xinetd.d/rsync  
    添加:  disable= no  
    # 默认为yes,需要将他设置为no,让xinetd接管rsync服务。注意,如果你使用手动的方式,这里就修改为no,即拒绝xinetd接管rsync服务。
[root@localhost ~]# /etc/init.d/xinetd  start # 启动xinetd服务,则默认会以守护进程方式启动rsync 服务

5、检查服务状态

    lsof -i:873 
    或者:
    netstat -lntup |grep 873

补充:

    手动启动rsync的常见参数:    

[root@rsync-server ~]# rsync --daemon   # daemon 表示以守护进程的方式启动rsync服务
常用启动参数:
--daemon   # 表示以守护进程的方式启动rsync服务
--address  # 绑定指定ip地址提供服务,即服务器是多网卡模式或多虚拟IP模式,需要指定某个固定ip提供服务
--config=FILE  # 更改配置文件路径,而不去使用默认的/etc/rsyncd.conf
--port=PORT    # 更改其它端口提供服务,而不去使用模式的873端口。

以上即为rsync服务端的整个配置步骤了!

RSYNC 服务端已经部署完毕,接下来如果要使用的话,肯定还需要搭配 rsync 客户端才行!下面就来看,rsync客户端怎么部署!


二.RSYNC 客户端部署

    RSYNC 客户端部署起来非常简单,我们仅仅需要安装 rsync 软件,然后创建一个本地密码文件。该密码文件为对应rsync 服务端配置文件里面每个模块下面的虚拟用户的密码,以此来实现免密码同步!

    1. 安装rsync: yum install -y rsync 

    2、配置本地密码文件:   vi /etc/rsync.password

            #添加服务端的密码就行了

[root@localhost ~]# cat /etc/rsync.password 
123456

到此,服务端跟客户端都配置完成!

下面进行测试 :

我们需要去rsync客户端,来完成下面的测试操作。需要注意,测试同样分为两种情况,每种情况又有两种语法写法,分别为:

拉取:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
     rsync [OPTION...] rsync//[USER@]HOST[:PORT]/SRC... [DEST]
推送:rsync [OPTION...] SRC... [USER@]HOST:DEST
     rsync [OPTION...] SRC...  rsync//[USER@]HOST[:PORT]/DEST

特别值得注意的是,与远程shell模式命令不同的是,第①种语法格式, [USER@]HOST::SRC和 [USER@]HOST::DEST结尾处,均为双冒号连接SRC或DEST。另外,这个SRC或DEST已经不再是路径了,而是守护进程中配置的模块的名称了。

 实例:          

第一种格式:

拉取:

rsync -avzP [email protected]::sunsky /test/ --password-file=/etc/rsync.password

推送:

   rsync -avzP /test/ [email protected]::sunsky --password-file=/etc/rsync.password

第二种格式:

    拉取:

    rsync -avzP rsync//rsync@192.168.1.34:/sunsky/ /test/ --password-file=/etc/rsync.password

   rsync -avzP /test/ rsync//rsync@192.168.1.34:/sunsky/ --password-file=/etc/rsync.password

--delete的操作效果

--delete 使同步的两个文件夹一致:

现在查看rsync 客户端/test目录里的内容:

[root@localhost test]# ll /test
total 0
-rw-r--r-- 1 root root 0 Jul 14 10:41 1111
-rw-r--r-- 1 root root 0 Jul 14 11:12 123456
-rw-r--r-- 1 root root 0 Jul 14 11:12 a
-rw-r--r-- 1 root root 0 Jul 14 11:12 b
-rw-r--r-- 1 root root 0 Jul 11 17:57 dfadaf
-rw-r--r-- 1 root root 0 Jul 14 10:39 dfadafdfaf

查看rsync 服务端端/test目录里的内容:

[root@localhost test]# ll /test/
total 0
-rw-r--r-- 1 root root 0 Jul 14 10:41 1111
-rw-r--r-- 1 root root 0 Jul 11 17:57 dfadaf
-rw-r--r-- 1 root root 0 Jul 14 10:39 dfadafdfaf

两个文件夹不一致.现在客户端执行拉取命令:

[root@localhost test]# rsync -avzP --delete [email protected]::sunsky /test/ --password-file=/etc/rsync.password
receiving incremental file list
deleting b
deleting a
deleting 123456
./
sent 60 bytes  received 143 bytes  406.00 bytes/sec
total size is 0  speedup is 0.00

再看看客户端/test目录下的文件

[root@localhost test]# ll /test/
total 0
-rw-r--r-- 1 root root 0 Jul 14 10:41 1111
-rw-r--r-- 1 root root 0 Jul 11 17:57 dfadaf
-rw-r--r-- 1 root root 0 Jul 14 10:39 dfadafdfaf

不一致的内容已经被删除!反之,执行推送命令将删除服务端/test目录中与客户端/test目录不一致的文件;


--exclude的操作效果

--exclude 为排除命令,指定的文件将不会被拉取或推送;

rsync客户端:

[root@localhost test]# tree /test
/test
├── 1111
├── 1.txt
├── a
│   └── a.txt
├── dfadaf
└── dfadafdfaf
1 directory, 5 files

rsync 服务端:

[root@localhost test]# tree /test
/test
0 directories, 0 files

以上为操作前的环境,请保持这个环境一致,然后做如下操作:

在rsync客户端做推送操作:

[root@localhost test]#  rsync -avz --exclude=*.txt /test/ [email protected]:/test/
[email protected]'s password: 
sending incremental file list
./
1111
dfadaf
dfadafdfaf
a/
sent 217 bytes  received 76 bytes  65.11 bytes/sec
total size is 0  speedup is 0.00

再查看服务端/test目录

[root@localhost test]# tree /test
/test
├── 1111
├── a
├── dfadaf
└── dfadafdfaf
1 directory, 3 files

我们可以发现,只要是能被*.txt匹配到的都没有被推送过去!

如果说,你有很多需要排除的目录或者文件,不希望他们被同步过去,此时你可以使用--exclude-from参数,该参数后面跟一个文件,你可以将需要匹配排除的项写到该文件里面!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章