周五:    8.6 :测试以下命令:

    1. 在本地两个目录间进行数据同步
        以下命令用于在两个目录间完成文件拷贝:

$ rsync -zvr /nand/app/test/ /nand/app/share/

            结论:可行,ls -l 对比,二者文件信息和属性一致

    2. 本地与远程主机间完成数据同步:15.1-->10.12======15.1主机推送同步/获取同步
        我们可以用rsync将本地的文件,同步到远程机器:

$ rsync -avz /nand/app/ root@169.254.10.12:nand        //     $ rsync -avz root@169.254.10.12:nand /nand/app/ 
                  //(Password:此处输入你的密码) #或者指定验证密码文件--password-file=/etc/rsync.password,可免除手动输入密码步骤

            结论:可行,但过程出了个小问题,客户端报错:auth failed on module nand,在10.12的主机上将/etc/rsync.secrets权限设置为600就可以了

    3. 使用ssh通道进行数据同步(属于加密传输)
        在与远端进行数据同步时,我们一般采用ssh通道,使用 -e ssh 选项可以完成该功能:
  

$ rsync -avz -e ssh /nand/app/test/ root@169.254.10.12:nand

            结论:不可行,报错:未安装ssh。

    4. 不覆盖目的地对文件已作的修改
        经常出现这样的场景,我们对源文件和目的地文件均作了修改,同时想将源文件作的修改同步到目的地,但又保留对目的地文件的更改,此时可以使用 -u 选项:
 

$ rsync -avzu /nand/app/ root@169.254.10.12:nand        
             $ rsync -avzu root@169.254.10.12:nand /nand/app/test/


            
            测试结果:15.1主机推送同步的状态下:文件的增,删,改,测试在不带参数-u和带参数-u的情况下结果是一样的:多出来的文件保留,缺少的文件同步,修改的文件替换
                              15.1主机获取同步的状态下:文件的增,删,改,测试在不带参数-u和带参数-u的情况下结果是一样的:多出来的文件保留,缺少的文件同步,修改的文件替换 

            结论:默认带参数-u,保险起见带上-u参数--------效果:多出来的文件保留,缺少的文件同步,修改的文件替换

    5. 删除不存在于源目录的目的地文件
        对于不存在于源目录,但存在于目的地的文件,有时我们想在做文件同步时删除它们,–delete 选项可以满足要求:
            $ rsync -avz --delete /nand/app/test/ root@169.254.10.12:nand
            $ rsync -avz --delete root@169.254.10.12:nand /nand/app/test/
            
            测试结果:15.1主机推送同步的状态下:15.1主机/nand/app/test/ 下有1.c,2.c,3.c文件,10.12主机/nand/app/test/ 下有4.b,5.b----》
                处理:推送同步后10.12主机/nand/app/test/ 下只有1.c,2.c,3.c文件,4.b,5.b文件已被删除,属于不保留模式同步,也叫完全同步

                          15.1主机获取同步的状态下:15.1主机/nand/app/test/ 下有1.c,2.c,3.c文件,10.12主机/nand/app/test/ 下有4.b,5.b----》
                处理:获取同步后15.1主机/nand/app/test/ 下只有4.b,5.b文件,1.c,2.c,3.c文件已被删除,也属于不保留模式同步,也叫完全同步
            
            结论:–-delete 选项属于不保留模式同步或完全同步,即源路径文件和目标路径文件完全一致同步

    6. 在同步时不在目的地创建新文件
        有时我们只想对目的地已经有的文件进行同步,而不理会源目录新增的文件,此时可以使用 –existing 选项:

$ rsync -avz --existing /nand/app/test/ root@169.254.10.12:nand
             $ rsync -avz --existing root@169.254.10.12:nand /nand/app/test/

            测试结果:15.1主机推送同步的状态下:15.1主机/nand/app/test/ 下有1.c 2.c 3.c文件,10.12主机/nand/app/test/ 下有1.c 4.b 5.b文件----》
                处理一:推送同步后,10.12主机/nand/app/test/ 下的1.c文件与15.1主机/nand/app/test/的1.c文件信息一致而4.b,5.b文件保留无变化;
                处理二:修改(增删改)15.1主机的1.c文件再次推送同步,依旧与15.1主机的1.c文件信息一致,而10.12主机下的4.b,5.b文件和15.1主机下的2.c 3.c保留无变化,属于对应目录同名文件同步保留模式同步
                          
                15.1主机获取同步的状态下:15.1主机/nand/app/test/ 下有1.c 2.c 3.c文件,10.12主机/nand/app/test/ 下有1.c 4.b 5.b文件----》
                处理一:获取同步后,15.1主机/nand/app/test/ 下的1.c文件与10.12主机/nand/app/test/ 下的1.c文件信息一致而2.c 3.c文件保留无变化;
                处理二:修改(增删改)10.12主机的1.c文件再次推送同步,依旧与10.12主机1.c文件信息一致,而15.1主机下的2.c 3.c文件和10.12主机下的4.b 5.b文件保留无变化,属于对应目录同名文件同步保留模式同步

            结论:--existing 选项属于对应目录同名文件同步保留模式同步,在此选项下只会同步双方共同存在的对应目录的同名文件,而不会干涉彼此各自拥有的对应目录不同名文件
    7. 显示执行进度
        使用 -–progress 选项可以显示同步的进度,包括文件传输完成进度、传输速率信息:
      

$ rsync -avz --progress /nand/app/test/  root@169.254.10.12:nand
             $ rsync -avz --progress root@169.254.10.12:nand /nand/app/test/

        显示结果:

sending incremental file list
             aa/
             aa/ccc
                               0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/9)            sent 234 bytes  received 54 bytes  576.00 bytes/sec
             total size is 169  speedup is 0.59


        结论:如果文件过大,可以使用 --progress 选项查看同步进度

    8. 查看 source 和 destination 间的区别
        A.单独使用-i选项,以类似 ls -l 命令的形式将该模块的对应的目录下所有的文件和目录列出来

rsync -i root@169.254.10.12::nand --password-file=/etc/rsync.password


        
        显示结果:
     

drwxr-xr-x          2,048 1970/01/04 00:04:03 .
             -rw-r--r--             34 1970/01/01 06:07:10 1.c
             -rw-r--r--              0 1970/01/04 00:03:25 4.b
             -rw-r--r--              0 1970/01/04 00:03:30 5.b
             drwxrwxrwx          2,048 2019/12/10 13:04:37 .config
             drwxr-xr-x          2,048 1970/01/01 06:43:54 aa

        B.同步命令配合-i 选项可以显示源目录与目的地间的差异
            $rsync -zavi root@169.254.10.12:nand /nand/app/test/
        显示结果:

receiving incremental file list
         >f+++++++++ 4.b
         >f+++++++++ 5.b        sent 68 bytes  received 273 bytes  682.00 bytes/sec
         total size is 180  speedup is 0.53

    对于同步的每个文件,均对应有一条输出,有11个标志位指示源文件与目的地文件的区别,在以上例子中,各标志位意义如下:
        > 指示传输到本地
        f 指示所传为文件
        s 指示文件大小不一致
        t 指示时间戳不一致
        o 指示属主不一致
    结论:1.可以使用 -i 选项查看某个目标主机的某个可视模块的目录下的文件和目录列表
              2.配合同步命令可以在同步完成后查看哪些文件同步了,可以清楚地对比源目录和目标目录同步后的文件区别和变动

    9. 按指定模式进行同步
        使用 -–include 和 -–exclude 选项,可以帮助我们完成只同步特定文件的目的:
 

$ rsync -avz --include 'a*' --exclude '*' root@169.254.10.12:nand /nand/app/test/

    结果:只同步以‘a’开头的文件以及 'a' 开头的目录----也仅同步'a'开头的目录下'a'开头目录和文件(递归)

    结论:使用 –include 和 –exclude 选项可以只同步特定文件,用法灵活,暂时只测试了这样的例子
    
    10. 限制传输文件的大小

        使用 –-max-size 选项,我们可以限制传输文件的最大大小:
     

$ rsync -avz --max-size='100K'  root@169.254.10.12:nand /nand/app/test/


    
    结论:在某些情况下,我们可以跳过某些大文件进行同步,以节省时间

    11. 全拷贝
        默认情况下 rsync 采用增量拷贝,这样能节省带宽,在所同步文件不大的情况下,我们可以通过 -W 选项实现全拷贝:

$ rsync -avzW /var/opt/lx/ /root/temp


    
    测试结果:无论本地还是远程,无论是获取还是推送同步,无论带不带-W参数,都是首次全拷贝同步,后面都是增量拷贝同步
    
    结论:不知道是什么原因,我的测试中-W参数不起作用,后面再尝试一下其他情况下使用-W参数能不能起作用