zoukankan      html  css  js  c++  java
  • rsync同步数据

    1. rsync 命令格式
    rsync [OPTION]... SRC DEST
    rsync [OPTION]... SRC [USER@]HOST:DEST
    rsync [OPTION]... [USER@]HOST:SRC DEST
    rsync [OPTION]... [USER@]HOST::SRC DEST
    rsync [OPTION]... SRC [USER@]HOST::DEST

    2. rsync常用选项
    -a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 --no-OPTION 这个表示关闭-rlptgoD中的某一个例如-a--no-l 等同于-rptgoD
    -r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项
    -v 打印一些信息出来,比如速率,文件数量等,P也是,比较详细
    -l 保留软链结
    -L 向对待常规文件一样处理软链接,如果是SRC中有软链接文件,则加上该选项后将会把软链接指向的目标文件拷贝到DST
    -p 保持文件权限
    -o 保持文件属主信息
    -g 保持文件属组信息
    -D 保持设备文件信息
    -t 保持文件时间信息
    --delete 删除那些目标文件中源文件中没有的文件
    --exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)
    --progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等
    -u 加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖
    最常用的 -a -v --delete --exclude
    -z 压缩

    3. rsync选项讲解
    rsync -av dir1/ dir2/ # 其中dir2/目录可以不存在,记得同步目录时一定要在末尾加上/

    -a 会把软连接原原本本的拷贝过去,那有时候我们想拷贝源文件怎么办?就时候就用到一个 -L
    rsync -avL test1/ test2/

    -u 选项的作用是,如果目标文件比源文件新,那么会忽略掉该文件
    touch test2/1.txt; rsync -avu test1/ test2/

    rsync -av --delete test1/ test2/ #这样会把test2/目录比test1/目录多出来的文件删除掉

    rsync -a --exclude=“2.txt” test1/ test2/ #在同步的过程中,会忽略掉2.txt这个文件,就是不更新他

    rsync -a --progress --exclude=“*.txt” test1/ test2/ #--progress 显示同步过程的详细信息,--exclude后面也可以使用通配符*

    4. rsync应用实例 - ssh方式
    rsync -avzLP aaa/ 192.168.0.101:/tmp/aaa/ 本地--》远程
    rsync -avzLP 192.168.0.101:/tmp/aaa/ aaa/ 远程--》本地
    =======================================
    rsync -avzLP -e "ssh -p 8093"192.168.0.101:/tmp/aaa/ aaa/ 指定他的远程端口

    rsync -avL test1/ www@192.168.0.101:/tmp/test2/
    rsync -avL 192.168.0.101:/tmp/test2/ ./test3/

    由于需要输入密码所以不适合写到脚本中,但可以通过创建秘钥对,让两台机器产生信任关系从而不用输入密码
    如果ssh端口不是22,那么需要写成这样的形式:
    rsync -av "--rsh=ssh -p 8093” /dir1/ 192.168.0.101:/tmp/dir2/

    ==========================
    5. rsync应用实例 - 后台服务方式(指定其他客户端访问我指定的目录)
    配置文件 /etc/rsyncd.conf ,内容如下:
    #port=873 #监听端口默认为873,也可以是别的端口
    port=8730
    log file=/var/log/rsync.log #指定日志
    pid file=/var/run/rsyncd.pid #指定pid
    #address=192.168.0.10 #可以定义绑定的ip
    以上部分为全局配置部分,以下为模块内的设置
    [test] #为模块名,自定义
    path=/tmp/test # 指定该模块对应在哪个目录下
    use chroot=true #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,也可以使用yes,no
    max connections=4 # 指定最大可以连接的客户端数
    read only=no #是否为只读
    list=true #是否可以列出模块名,rsync --port 8730 test1@192.168.11.190::
    uid=root #以哪个用户的身份来传输
    gid=root #以哪个组的身份来传输
    auth users=test1 #指定验证用户名,可以不设置
    secrets file=/etc/rsyncd.passwd #指定密码文件,如果设定验证用户,这一项必须设置
    hosts allow=192.168.0.0/24 #设置可以允许访问的主机,可以是网段或一个多个ip

    密码文件/etc/rsyncd.passwd的内容格式为:username:password
    启动服务的命令是:rsync --daemon
    netstat -lnp 看服务端口
    ps aux |grep rsync 看服务
    cat /var/log/rsync.log

    mkdir /tmp/test
    touch /tmp/test/1.txt
    echo "sdlfjlsjfl" > !$

    rsync -avLzP test1@192.168.11.190::test/ /tmp/223/ test1验证用户名;test 是模块名,如果test下还有目录就要指定

    rsync -avLzP --port 8730 test1@192.168.11.190::test/ /tmp/223/ 把服务端的1.txt同步到客户机了

    rsync -avLzP --port 8730 /etc/passwd test1@192.168.11.190::test/ 把客户机的文件推到服务端了
    ==============================

    默认去使用/etc/rsyncd.conf这个配置文件,也可以指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf
    可使用的选项有: rsync --daemon --help
    几个测试点:port, use chroot, log file, secrets file, hosts allow, list


    在客户端设置一个密码文件
    rsync --help |grep pass 找到那个文件使用方法
    vim /etc/rsync.pa
    123456
    chmod 600 !$

    rsync -avLzP --port 8730 --password-file=/etc/rsync.pa test1@192.168.11.190::test/ /tmp/223/

     

  • 相关阅读:
    【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你
    【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底
    JZOJ2020年8月12日提高组反思
    JZOJ2020年8月11日提高组T4 景点中心
    JZOJ2020年8月11日提高组T3 页
    JZOJ2020年8月11日提高组T2 宝石
    JZOJ2020年8月11日提高组T1 密码
    JZOJ2020年8月11日提高组反思
    JZOJ2020年8月10日提高组T3 玩诈欺的小杉
    nw335 debian sid x86-64 --3 linux内核自带
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4606305.html
Copyright © 2011-2022 走看看