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

    1.rsync和ssh差异远程同步命令

     1 命令格式:
     2 #rsync [option] 源路径 目标路径
     3 其中:
     4 [option]:
     5 a:使用archive模式,等于-rlptgoD,即保持原有的文件权限
     6 z:表示传输时压缩数据
     7 v:显示到屏幕中
     8 e:使用远程shell程序(可以使用rsh或ssh)
     9 --delete:精确保存副本,源主机删除的文件,目标主机也会同步删除
    10 --include=PATTERN:不排除符合PATTERN的文件或目录
    11 --exclude=PATTERN:排除所有符合PATTERN的文件或目录
    12 --password-file:指定用于rsync服务器的用户验证密码
    13 
    14 源路径和目标路径可以使用如下格式:
    15 rsync://[USER@]Host[:Port]/Path     <--rsync服务器路径
    16 [USER@]Host::Path                         <--rsync服务器的另一种表示形式
    17 [USER@]Host:Path                          <--远程路径
    18 LocalPath                                       <--本地路径

    ※需要注意的是,来源或目的路径最少要有一个是本地路径,如果忽略本地路径,则只会列出远端的文件列表。

    例子:

    mkdir test_new;  //本地建立一个测试目录

    ssh ljz@192.168.1.109:/home/ljz/test/  //这个是svn服务器中的账户目录

    将svn上test目录下的内容更新到本地test_new目录下

    rsync -ave ssh  ljz@192.168.1.109:/home/ljz/test/ /home/ljz/test_new/  

    ※需要注意的是,如果是/home/ljz/test/表示是test目录下的所有内容,/home/ljz/test表示连同这个目录已经目录下的所有内容

    将本地内容同步到远程目录?

    rsync -ave ssh /home/ljz/test_new/  ljz@192.168.1.109:/home/ljz/test/ 

    1#rsync -avz --delete ljz@192.168.1.109:/home/ljz/test/ /home/ljz/New_Test/

    将109上的test目录内容同步到本地的New_Test目录,并删除本地上源路径中不存在的文件或目录。
    ※千万要注意--delete参数,在使用此参数的时候,建议用绝对路径指定本地目录,防止清空当前目录。

    二、建立rsync服务器
     当服务器没有开通ssh,或备份方没有ssh权限的时候,我们可以通过建立rsync服务器,进行匿名的数据同步。
     要使用rsync服务,需要建立服务端和客户端:
    1、服务端
    主配置文件:

     1 #vi /etc/rsyncd.conf
     2 log file = /var/log/rsyncd.log
     3 pid file = /var/run/rsyncd.pid
     4 lock file = /var/run/rsync.lock
     5 [test]                                      #rsync区段的设定名称
     6 path = /var/www/html/test       #需要同步的数据存放路径
     7 comment =  test folder             #注释
     8 uid = apache                           #采用什么身份进行文件读取
     9 gid = apache                           #同上,必须是有读取path权限的用户、组
    10 ignore errors                           #忽略错误
    11 read only = yes                       #只读
    12 list = no                                  #不能列表
    13 auth users = linuxing                #连接rsync服务的帐号
    14 secrets file = /etc/rsyncd.secrets    #指定存放帐号密码的位置

    帐号密码文件:

    #vi /etc/rsyncd.secrets
    #格式:帐号:密码 (每行一组,帐号和密码用:号分开)
    linuxing:backup


    保存后,需要保证用户是root,权限是600

    #chown root:root /etc/rsyncd.secrets
    #chmod 600 /etc/rsyncd.secrets



    启动服务:
    #rsync --daemon

    保证开机自动启动:
    修改/etc/xinetd.d/rsync文件,把其中的disable=yes改为disable=no

    #sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/rsync
    #service xinetd.d restart



    2、客户端
     使用用法一中涉及到rsync://的方法即可。
     如果rsync服务器需要密码验证,可以增加--password-file参数:

    #rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
    #vi /etc/test
    #指定访问密码
    bakcup
    #chmod 600 /etc/test



    3、定时
      另外,由于rsync客户端没有定时功能,我们可以通过在crontab中增加计划任务实现定时的同步,如:(不要使用-v参数,防止刷屏)


    #crontab -e
    0 22 * * 1-5 /usr/bin/rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
    #指定星期一到五,每晚十点整进行同步



    三、总结
     使用rsync的优点:可通过ssh进行网络加密传输,也可以利用ssh客户端密钥建立信任关系。当在两台计算机之间保持大型、复杂目录结构的同步时候,比tar或wget等方式都要快。而且可以做到精确同步。

    四、附录
     如果是通过编译安装的rsync(如FreeBSD),路径有点不同:
    服务器的配置文件在:/usr/local/etc/rsyncd.conf
    启动文件:/usr/local/etc/rc.d/rsyncd.sh
    命令文件:/usr/local/bin/rsync
    系统启动托管:/etc/rc.conf(增加rsyncd_enable="YES")

     
     
     

     

  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/daxian2012/p/2618375.html
Copyright © 2011-2022 走看看