zoukankan      html  css  js  c++  java
  • rsync 远程同步工具

    前言:rsync是类unix系统下的数据镜像备份工具,可以镜像保存整个目录树和文件系统,可以很容易做到保持原来文件的权限、时间、软硬链接等等。
    rsync同样属于C/S架构模型,服务端守护进程始终监听于873端口
    对比rsync命令与scp命令的优劣性

    • rsync有六种不同的工作模式介绍

      • 1:拷贝本地文件;类似于cp命令 
        • rsync grub.conf /data/
      • 2:使用一个远程shell程序(如rsh、ssh)将本地拷贝到远端主机的某个目录下 
        • rsync -avz grub.conf root@192.168.23.12:/data
      • 3:使用一个远程shell程序(如rsh、ssh)将远端主机的文件拉到本地的某个目录下 
        • rsync -avz root@192.168.23.12:/data/grub.conf /tmp/
      • 4:将远程rsync服务器中的文件拷贝到本地目录 
        • /usr/bin/rsync -avz --delete nfs@192.168.23.26::data /data/ --password-file=/etc/rsync.password
      • 5:将本地目录文件拷贝到远程rsync服务器中(非常重要) 
        • /usr/bin/rsync -avz --delete /data/ nfs@192.168.23.26::data --password-file=/etc/rsync.password
      • 6:列出远程机的文件列表, 这类似于rsync传输
    • rsync命令格式

    (一) Local:  rsync [OPTION...] SRC... [DEST]

    例如: rsync -avz /root/ /tmp/ # 将/root目录下的所有文件拷贝到/tmp目录下,默认是增量拷贝
    例如: rsync -avz --delete /root/ /tmp/ # 增加--delete选项,指明在增量拷贝的基础上全量拷贝,也就是说/root目录下有的文件,/tmp目录下要有,/root目录下没有的文件,/tmp目录下要将文件删除。最后表现为/tmp目录的文件与/root目录的文件一样


    (二)Access via remote shell:
    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    例如:rsync -avz --delete -e "ssh -p 22" /tmp/ 192.168.23.26:/tmp # 通过ssh加密,使得192.168.23.26主机上的/tmp目录下的所有文件与本机的/tmp目录下的文件一样
    说明: 如何是本地拉取的话,如命令格式所示,源地址与目标地址需要调换一下位置


    (三)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

    例如:rsync -avz --delete /tmp/ rsync_backup@192.168.23.26::backup --password-file=/etc/rsync.password # 在daemon模式下,客户端将本地的/tmp目录下的所有文件推送到192.168.23.26主机的backup模块指定的目录中去
    例如:rsync -avz --delete rsync_backup@192.168.23.26::backup --password-file=/etc/rsync.password /tmp/ # 这就是将远端的拉倒本地的/tmp目录下
    • 重要选项介绍
    -a: --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
    -v: --verbose 详细模式输出
    -r: --recursive 对子目录以递归模式处理
    -z: --compress 对备份的文件在传输时进行压缩处理
    --delete :无差异拷贝
    --exclude=somefile 指定排除不需要传输的文件模式

    • rsync的启动方式分
    1:以守护进程的方式启动
    /usr/bin/rsync --daemon

    2:托管给xinetd服务,由xinetd代为管理
    编辑 /etc/xinetd.d/rsync文件
    将disable = no改为disable = yes
    重启xinetd服务
    此时可以看到xinetd服务监听在873端口上

    • rsync服务端配置(必须掌握)
    0:创建一个/data目录,用来指定接受rsync客户端推送的文件
    mkdir /data

    1:编辑/etc/rsyncd.conf主配置文件
    # 指定访问本地共享目录的属主和属组,当客户端连接到服务端,那么进程就以这里指定的uid和gid运行
    uid = rsync
    gid = rsync
    # 不禁锢
    use chroot = no
    # 指定服务端最大并发连接数量
    max connections = 2000
    # 指定超时时长
    timeout = 900
    # 指定程序的pid路径
    pid file = /var/run/rsyncd.pid
    # 指定日志路径
    log file = /var/log/rsyncd.log
    # 指定文件系统锁路径
    lock file = /var/run/rsyncd.lock
    # 指定推送时出现错误忽略
    ignore errors
    # 指定客户端可以向服务端推送数据,因此必须是可读写
    read only = false
    # 关闭远程列表
    list = false
    # 指定允许连接rsync服务端的网络地址
    hosts allow = 192.168.23.0/24
    hosts deny = 0.0.0.0/32
    # 启用虚拟用户(无需是系统用户),虚拟用户的意义在于用户名和密码认证
    auth users = hello
    # 指定用户名和密码的文件,这个文件里面的用户名就是auth users指定的用户名,然后给个密码就好
    secrets file = /etc/rsync.password
    #transfer logging = yes
    #ignore nonreadable = yes
    #dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

    # 指定一个模块,用来指定接受客户端推送的文件
    [data]
    path = /data
    comment = shared remoted NFS directory /data


    2:创建一个rsync, 设置/data目录的属主为rsync,创建虚拟用户和密码
    useradd rsync -s /sbin/nologin -M # 在rsync服务端一个rsync用户,不能登入,不创建家目录
    chown -R rsync /data # 修改/data目录的属主为rsync,这样rsyncd进程就能够向目录里面写数据
    echo "hello:123456" > /etc/rsync.password # 由于在/etc/rsyncd.conf主配置文件中指定了客户端登入的用户名以及密钥文件路径,那么根据路径创建用户密码即可
    chmod 600 /etc/rsync.password # 修改密码文件的权限,注意,这里的客户端和服务端的/etc/rsync.password文件的权限都需要修改,且文件的属主和属组都是root,因为没有禁锢root。

    3:配置rsync服务配置进程文件/etc/sysconfig/rsyncd
    OPTIONS="--address=192.168.23.12" # 将rsync服务监听到固定的IP地址上
    • rsync客户端配置(必须掌握)
    1:创建同步时候使用的密钥文件
    echo "123456" > /etc/rsync.password

    2:修改密钥文件的权限为600
    chmod 600 /etc/rsync.password

    2:手动同步本地的/data/目录的所有文件到rsync服务端
    /usr/bin/rsync -avz --delete /data/ hello@192.168.23.12::data --password-file=/etc/rsync.password
  • 相关阅读:
    Ztree-
    富文本编辑器Ueditor
    通知 弹框
    ResultEntity
    echart
    定时器,定时发邮件JavaMail
    重定向传值
    图片验证码
    异步json发送put或者delete
    异步时间格式转换插件
  • 原文地址:https://www.cnblogs.com/liu1026/p/7588229.html
Copyright © 2011-2022 走看看