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
  • 相关阅读:
    windwos8.1英文版安装SQL2008 R2中断停止的解决方案
    indwows8.1 英文版64位安装数据库时出现The ENU localization is not supported by this SQL Server media
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
    SQL数据附加问题
    eclipse,myeclipse中集合svn的方法
    JAVA SSH 框架介绍
    SSH框架-相关知识点
    SuperMapRealSpace Heading Tilt Roll的理解
    SuperMap iserver manage不能访问本地目的(IE9)
    Myeclipse中js文件中的乱码处理
  • 原文地址:https://www.cnblogs.com/liu1026/p/7588229.html
Copyright © 2011-2022 走看看