zoukankan      html  css  js  c++  java
  • rsync使用详解

    1.rsync本地模式及参数总结

    本地拷贝,相当于cp
    -e,使用通道协议;
    -v,--verbose详细模式输出;
    -z,--compress传输时进行压缩以提高传输效率;
    -a,--archive归档模式,以递归方式传输文件,并保持所有文件属性,相当于-rtopgD
    -r,--recursive对子目录以递归模式;
    -o,--owner保持文件属主;
    -p,--perms保持文件权限;
    -g,--group包吃文件属组信息;
    --exclude=PATTERN,指定排除不需要传输的文件模式;
    --exclude-from=file
    --bwlimit=RATE
    --delete,让目标目录和源目录数据一致.
    
    rsync -avz /etc/hosts* /mnt/
    # /tmp1/是一个空目录,下面命令会导致清空/mnt目录
    rsync -avz --delete /tmp1/ /mnt/
    # 下面两条命令的执行结果是不一样的,带斜线是只拷贝目录中的文件,
    # 不带斜线是将目录和文件一起拷贝到目标目录
    rsync -avz  /tmp1/ /mnt/
    rsync -avz  /tmp1 /mnt/
    

    2.rsync实现不同主机拷贝数据

    2.rsync实现不同主机拷贝数据
    rsync -az /etc/hosts* -e 'ssh -p 22' root@10.0.0.31:/mnt
    # 会出现解析慢的情况
    Address 10.0.0.31 maps to localhost, but this does not map back to the address
     - POSSIBLE BREAK-IN ATTEMPT!
    # 修改目标主机的ssh配置文件
    vi /etc/ssh/sshd_config
    GSSAPIAuthentication no
    UseDNS no
    

    3.服务器端、客户端的操作和配置

    服务器端

    vim /etc/rsyncd.conf
    # uid是运行进程的用户,客户端通过验证后使用rsync用户访问共享目录,
    # 默认是nobody,用默认也行,系统安装完之后,是存在这个用户的
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    
    [backup]
    path = /backup
    ignore errors
    read only = false
    list = false
    hosts allow = 172.16.1.0/24
    # hosts deny = 0.0.0.0/32  二选一
    auth users = rsync_backup  # 独立于系统账号之外的虚拟用户
    secrets file = /etc/rsync.password
    
    # auth users在man手册中有说明:
    This usernames do not need to exists on the local system.
    
    # 该文件中的用户名作用:验证客户端是否有资格登录服务器端
    vi /etc/rsync.password
    rsync_backup:oldboy
    
    useradd -M -s /sbin/nologin rsync
    mkdir /backup
    ls -ld /backup
    drwxr-xr-x 2 root root 4096 Nov 26 00:38 /backup
    # 如果这个目录的权限不是rsync而是root,
    # 那么客户端通过验证之后以rsync用户访问该目录就会没有权限
    chown rsync.rsync /backup/  
    drwxr-xr-x 2 rsync rsync 4096 Nov 26 00:38 /backup
    chmod 600 /etc/rsync.password  # 必须修改权限
    rsync --daemon
    echo "/usr/bin/rsync --daemon" >> /etc/rc.local
    

    客户端

    客户端密码文件中只有密码

    vi /etc/rsync.password
    oldboy
    chmod 600 /etc/rsync.password
    如果没有缩小权限,那么还是会让你输入密码:
    password file must not be other-accessible
    continuing without password file
    Password:
    

    客户端的拉取(pull)和推送(push)

    推送:
    rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password 
    拉取:
    rsync -avz rsync_backup@172.16.1.41::backup /backup/ --password-file=/etc/rsync.password
    rsync -avz rsync://rsync_backup@172.16.1.41/backup/  /backup/ --password-file=/etc/rsync.password 
    提示:上述的backup是模块名,不是路径
    

    4.多模块配置

    cp /etc/rsyncd.conf{,.bak}
    mkdir -p /data/{nginx,mysql}
    chown -R rsync.rsync /data/
    
    vi /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 172.16.1.0/24
    # hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    
    [web]
    path = /data/nginx
    
    [mysql]
    path = /data/mysql
    
    客户端命令:
    rsync -avz /backup/ rsync_backup@172.16.1.41::web --password-file=/etc/rsync.password
    rsync -avz /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password
    

    5.排除及无差异同步

    # 排除单个文件
    rsync -avz --exclude=stu01 /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password
    # 排除多个文件,一般用来排除日志
    rsync -avz --exclude={stu01,stu02} /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password
    touch {01..10}.log
    rsync -avz --exclude=*.log /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password
    # 如果文件名连续的话可以这样
    rsync -avz --exclude={01..10}.log /backup/ rsync_backup@172.16.1.41::web --password-file=/etc/rsync.password
    # 无差异同步,即:使用参数--delete
    # 让服务器端和客户端保持一模一样,但实际情况是服务器端保存着远多于客户端的数据,所以此参数慎用.
    
    优点:增量备份,利用通道模式可以ssh加密传输;
    缺点:大量小文件同步时间可能较长,进程可能会停止,较大文件可能会中断.
    

    参考博客-rsync搭建:https://www.cnblogs.com/wenxinphp/p/5800446.html

  • 相关阅读:
    nuxt实践
    安卓H5软键盘遮挡输入框
    h5复制粘贴板,打开APP功能
    MVC3
    MVC3
    C#高编
    接口的显式实现(转)
    E-Retail 框架学习
    C#高编
    实现DIV居中布局三种途径(转)
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/10020283.html
Copyright © 2011-2022 走看看