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")

     
     
     

     

  • 相关阅读:
    最短路打印路径
    hdu1874(dijskstra算法和floyd算法)
    最短路径(Dijkstra算法)
    kruskal算法模板(续)
    kruskal算法模板
    最小生成树prim算法
    hdu1879(并查集)
    hdu1875 并查集
    top 1 1
    mvc 母版页中登录注册和问候的处理
  • 原文地址:https://www.cnblogs.com/daxian2012/p/2618375.html
Copyright © 2011-2022 走看看