一、rsync的简介

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

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

    无须特殊权限即可安装。

    快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。

            rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

    安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

    支持匿名传输,以方便进行网站镜象。 


二、rsync的工作模式及常用选项

1、rsync的工作模式

        第一种模式:shell模式,也称作本地模式;

第二种模式:远程shell模式,可以利用ssh协议承载其远程传输过程;

第三种模式:列表模式,仅列出源中的内容,-nv

第四种模式:服务模式,此时rsync工作为守护进程,能接收客户端的数据同步请求;

2、常用选项

            -z 传输时压缩;

            -P 传输进度;

            -v 传输时的进度等信息,和-P有点关系,

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

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

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

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

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

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

            -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,

                        将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。

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

            -l, --links 保留软链结

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

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

            --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、ssh方式进行数据同步

            -h, --help 显示帮助信息

        

        注意:rsync命令中,如果源路径是目录,且给复制路径时末尾有/,则会复制目录中的内容,而非目录本向;如果末尾没有/,则会同步目录本身及目录中的所有文件;目标路径末尾是否有/无关紧要;


例子:    wKiom1P4TnTh3BgAAAE9VJyjCGM842.jpgwKioL1P4ULWjAv0QAAFWEJAcdug698.jpg

wKioL1P4UweBftiNAANFR2vkq_o184.jpg


三、rsync服务模式

1、rsync配置文件介绍:

    全局配置段:对整个rsync服务器生效,如果共享配置段和全局配置段冲突,针对冲突共享配置段的共享配置段参数生效

    共享配置段:定义需要通过rsync输出的目录定义的参数

   

 全局配置段常用参数

        port    #使用的端口号,默认为873

        uid    #该选项指定当该模块传输文件时守护进程应该具有的uid,默认值是" nobody"

        gid    #该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"

        max connections    #指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随

                    后再试。默认值是0,也就是没有限制

        lock file    #指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock

        motd file    #" motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客

                                户,默认是没有motd文件的

        log file    #" log file"指定rsync的日志文件,而不将日志发送给syslog

        pid file    #指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置

        hosts allow   #单个IP地址或网络地址   //允许访问的客户机地址

        use chroot   #实验rsync时,是否开启chroot,为yes或no 


共享配置段常用参数

    path     #共享的目录路径

        ignore errors     #传输过程中出现错误是不是忽略yes或no

        read only     #yes为只允许下载,no为可以下载和上传文件到服务器

        write only    #是否只写能不能看

        hosts allow     #允许主机可连,可以是单个IP或多个IP,逗号分隔,*表示允许所有

        hosts deny    #拒绝设置,和allowe配合使用

        list     #是否列出列表,允许看为ture,不允许看false

        uid     #设置以那个用户

        gid     #设置以那个组

2、配置服务

    1、配置rsync服务器端(192.168.1.140),因为rsync本身不监听,要借助于超级守护进程

        [root@90sec /]# yum -y install xinetd

        [root@90sec /]# vim /etc/xinetd.d/rsync

        [root@90sec /]# chkconfig rsync on


wKioL1P4XI7wKQ6pAAEsSv1gyeo011.jpg    

   2、配置rsync服务参数

        [root@90sec /]# mkdir /data

        [root@90sec /]# vim /etc/rsyncd.conf

wKiom1P4XaXTtcSsAAFUd-J6tTo848.jpg

    3、开启服务并查看   

wKioL1P4XuOB9D2WAAHNexWCSus591.jpg   4、使用验证

    基本格式

       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


wKiom1P4YJag-rCEAAEqQXu80h4366.jpg

wKioL1P4ZDKTWduJAAFmvWaUmFQ766.jpg


在服务端开启基于用户认证功能

    1、修改配置文件

        [root@90sec /]# vim /etc/rsyncd.conf 

       wKiom1P4ZQ_D0q2lAAEquxxWFuU311.jpg

    2、为用户设置密码文件,并赋权

         [root@90sec /]# vim /etc/rsyncd.passwd

        [root@90sec /]# chmod 600 /etc/rsyncd.passwd 

        [root@90sec /]# service xinetd restart

wKioL1P4Zl6T7eEkAABd83sD3dg879.jpg

    3、测试

wKioL1P4Z8jSlbxcAAGJtr9mcuA347.jpg







一次删除一百万个文件的最快方法

先建立一个空目录

# mkdir aaa

# mkdir -p bbb/ccc

bbb/  aaa/

# touch bbb/ccc/1.txt

# touch bbb/ccc/2.txt

# ls aaa/

# rsync -a --delete-before -d aaa/ bbb/ccc/ 

# ls bbb/ccc/

# ls aaa/

# touch bbb/ccc/2.txt           

# touch bbb/ccc/1.txt

# rsync --delete-before -d aaa/ bbb/ccc/           

# ls bbb/ccc/