• linux 命令 rsync


    rsync
    一、rsync简介
    用于替代rcp的一个工具,rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时rsync server会开一个873端口,等待客户端去连接,连接时,rsync server会检查口令是否相符,若通过口令查核,则可以通过进行文件传输,第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份;
    
    二、rsync常用参数
    -v,--verbose  详细模式输出;
    -a,--archive  归档模式,表示以递归的方式传输文件,并保持所有文件属性不变,相当于使用了组合参数-rlptgoD;
    -r, --recursive 对子目录以递归模式处理;
    -l, --links 保留软链结;
    -p, --perms 保持文件权限;
    -t, --times 保持文件时间信息;
    -g, --group 保持文件属组信息;
    -o, --owner 保持文件属主信息;
    -D, --devices 保持设备文件信息;
    -H, --hard-links 保留硬链结;
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间;
    --delete 删除那些DST中SRC没有的文件;
    -z, --compress 对备份的文件在传输时进行压缩处理;
    
    三、rsync的六种不同的工作模式;
    1)拷贝本地文件;
    当SRC和DES路径信息中不包含冒号":"分隔符时,就启用这种工作模式:
    [root@cmmailapp1 /]# rsync -avSH /home/coremail/ /cmbak/
    
    2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器,当DST路径地址包括冒号":"分隔符时启动该模式;
    [root@cmmailapp1 /]# rsync -avSH /home/coremail/ 192.168.11.12:/home/coremail/
    
    3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器,当SRC地址路径包括冒号":"分隔符时启动该模式;
    [root@cmmailapp2 /]# rsync -avSH 192.168.11.11:/home/coremail/ /home/coremail/
    
    4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
    如:rsync -av root@172.16.78.192::www /databack
    
    5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
    如:rsync -av /databack root@172.16.78.192::www
    
    6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
    如:rsync -v rsync://192.168.11.11/data
    
    四、rsync服务端的配置;
    环境:192.168.11.11为生产机;192.168.11.12为备份机;
    那么需要192.168.11.11需要作为rsync的client;
    192.168.11.12作为rsync的service端;
    
    1192.168.11.12_service端的配置;
    1)[root@cmmailapp2 data]# touch /etc/rsyncd.conf  //此文件为rsync的主配置问题,默认不存在需要手动创建;
    2)定义同步的配置;
    [root@cmmailapp2 data]# cat /etc/rsyncd.conf 
    [data]
    path = /data/
    auth users = coremail
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no
    
    [mysql]
    Path = /home/coremail/var/mysql            
    auth users = coremail
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no
    
    [cmxt]
    Path = /home/coremail/          
    auth users = coremail
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no
    
    3)定义密码文件/etc/rsyncd.secrets
    [root@cmmailapp2 data]# cat  /etc/rsyncd.secrets 
    coremail:coremail
    
    4)启动rsync启动服务
    [root@cmmailapp2 data]# cat /etc/xinetd.d/rsync 
    # default: off
    # description: The rsync server is a good addition to an ftp server, as it 
    #       allows crc checksumming etc.
    service rsync
    {
            disable = yes           //需要修改为no;
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/bin/rsync
            server_args     = --daemon
            log_on_failure  += USERID
    }
    
    [root@cmmailapp2 data]# chkconfig --level 2345 rsync on
    [root@cmmailapp2 data]# chkconfig rsync on
    [root@cmmailapp2 data]# chkconfig --level 2345 xinetd on
    [root@cmmailapp2 data]# service xinetd restart
    Stopping xinetd: [  OK  ]
    Starting xinetd: [  OK  ]
    
    2192.168.11.11_client端的配置;
    [root@cmmailapp1 /]# cat /etc/rsyncd.secrets 
    coremail
    
    [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data
    [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql
    [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt
    
    五、定义定时自行rsync同步,指定同步的日志所在的路径/var/log/rsync/下;
    [root@cmmailapp1 log]# cat /root/rsync.sh 
    DATE=`date +%Y%m%d%H%M`
    rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data >/var/log/rsync.date.$DATE
    rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql >/var/log/rsync.mysql.$DATE
    rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt >/var/log/rsync.cmxt.$DATE
    
    chmod u+x /root/rsync.sh
    
    [root@cmmailapp1 log]# crontab -l
    0 3 * * * /root/rsync.sh
    
    执行时候的日子记录文件:
    [root@cmmailapp1 log]# ls |grep 'rsync'
    rsync.cmxt.201110180915
    rsync.date.201110180915
    rsync.mysql.201110180915

    服务器端必须启动,客户端无须启动。且服务器端密码文件形式每行一个帐号:密码,客户端密码文件形式只有一个密码

    #rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/
    把源路径中远端test机器上的/home/ftp/pub/目录中的内容,通过rsync同步到本地的/home/ftp/pub/目录下。 
    ◎小心源路径结尾时候的/号,后缀/通知rsync复制该目录的内容,但不复制目录本身。例如: 
    Code:
    #rsync -ave ssh test:/home/ftp/pub /home/ftp/
    则会把pub目录整个同步到本地/home/ftp/路径中 
    配置rsync 同步数据 rpm包安装rsync及配置
    
    
    [root@Hammer home]# rpm -qa |grep rsync #检查系统是否安装了rsync软件包
    rsync-2.6.8-3.1
    [root@Hammer CentOS]# rpm -ivh rsync-2.6.8-3.1.i386.rpm # 如果没有安装则手动安装
    
    [root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync 
    
    
    1 配置rsync servervi /etc/xinetd.d/rsync
    将disable=yes改为no
    
    service rsync
    {
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
    }
    
    2 配置rsync自动启动
    [root@test etc]# chkconfig rsync on
    [root@test etc]# chkconfig rsync --list
    rsync on
    
    3 配置rsyncd.conf 
    [root@test etc]# vim rsyncd.conf 
    
    uid = root
    gid = root
    use chroot = no
    max connections = 4
    strict modes = yes
    port = 873
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    
    [backup]
    path = /srv
    comment = This is test
    auth users = scihoo
    uid = root
    gid = root
    secrets file = /home/rsync.ps
    read only = no
    list = no
    
    
    4 确保etc/services中rsync端口号正确
    [root@test etc]# vim /etc/services
    rsync 873/tcp # rsync
    rsync 873/udp # rsync
    
    5 配置rsync密码(在上边的配置文件中已经写好路径)/home/rsync.ps(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
    [root@test etc]# vi /home/rsync.ps 
    scihoo:scihoo
    
    6 配置rsync密码文件权限
    [root@test home]# chown root.root rsync.ps 
    [root@test home]# chmod 400 rsync.ps (只有该用户可读写)
    
    7 启动配置
    [root@test home]# /etc/init.d/xinetd restart
    Stopping xinetd: [ OK ]
    Starting xinetd: [ OK ]
    
    8 如果xinetd没有的话,需要安装一下
    [root@test home]# yum -y install xinetd
    
    
    启动rsync server
    RSYNC服务端启动的两种方法
    9、启动rsync服务端(独立启动)
    [root@test home]# /usr/bin/rsync --daemon
    
    10、启动rsync服务端 (有xinetd超级进程启动)
    [root@test home]# /etc/init.d/xinetd reload
    
    11 加入rc.local
    在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync --daemon加载进去。
    [root@test home]# vi /etc/rc.local
    /usr/local/rsync –daemon #加入一行
    
    12 检查rsync是否启动
    [root@test home]# lsof -i :873
    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    xinetd 4396 root 5u IPv4 633387 TCP *:rsync (LISTEN)
    
    
    
    
    客户端配置
    1 配置三个过程就可以了
    1.1 设定密码文件
    1.2 测试rsync执行指令
    1.3 将rsync指令放入工作排程(crontab)
    [root@aj1 home]# vi /etc/xinetd.d/rsync 
    
    # default: off
    # description: The rsync server is a good addition to an ftp server, as it 
    # allows crc checksumming etc.
    service rsync
    {
    disable = yes
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
    }
    
    1.1 配置密码文件 (注:为了安全,设定密码档案的属性为:600。rsync.ps的密码一定要和Rsync Server密码设定案里的密码一样)
    [root@aj1 home]# vi rsync.ps 
    sciooo
    
    [root@aj1 home]# chown root.root .rsync.ps # 注意必须给权限
    [root@aj1 home]# chmod 600 .rsync.ps # 必须修改权限   否则会提示错误信息 password file must not be other-accessible
    
    1.2 从服务器上下载文件
    [root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps scihoo@192.168.0.206::backup /home/
    
    从本地上传到服务器上去
    [root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps /home scihoo@192.168.0.206::backup
  • 相关阅读:
    作业
    剑指Offer:链表中倒数第k个节点
    剑指Offer:反转链表
    剑指Offer:数值的整数次方
    剑指Offer:剪绳子Ⅰ和剪绳子Ⅱ
    剑指Offer:机器人的运动范围
    Linux下进程与线程的区别
    剑指Offer:调整数组顺序使奇数位于偶数前面
    剑指Offer:删除链表的节点
    剑指Offer:打印从1到最大的n位数
  • 原文地址:https://www.cnblogs.com/fly-xiang-zhao/p/4057338.html
Copyright © 2020-2023  润新知