zoukankan      html  css  js  c++  java
  • Linux操作篇之备份(rsync)

    一、rsync支持单向的完全备份和增量备份,两者各有优劣(双向数据同步差点)。rsync同步文件前需要先登录到目标主机进行用户身份验证,身份认证的协议可以使用ssh协议和rsync协议。当使用ssh协议时,使用的是Linux的系统用户;当使用rsync协议时,使用的是非系统用户(虚拟用户)。

    二、rsync特性:

    更新整个目录树和文件系统

    可以有选择的保留符号链接、硬链接、文件属性、权限、设备以及时间等

    安装时,无任何特殊权限要求

    多文件传输效率高

    可以使用ssh或自定义端口进行传输。

    软件名称:rsync。

    三、使用ssh协议进行数据传输:

    使用普通系统用户,则需要普通用户对目录有相应的权限,可以使用acl赋予其用户权限

    下载格式:rsync -avz  系统用户名@服务器地址:/服务器目录/*  /本地目录

    -a  归档模式,递归并保留文件属性

    -v  显示同步过程

    -z  在进行文件传输时进行压缩

    rsync2下载rsync1中的文件

     上传格式:rsync -avz    /本地目录  系统用户名@服务器地址:/服务器目录/*

    rsync2中的文件上传到rsync1中

     

     可以使用密钥的形式进行免密操作。

    ssh-keygen -t rsa -b 2048

     ssh-copy-id root@目标服务器地址

    两台设备都需要操作,输入一次密码即可。再次传输时,不需输入密码。

    四、使用rsync协议进行数据传输,这一项只需要在服务器端进行配置即可。

    1、vi /etc/rsyncd.conf  配置主配置文件

    address = 192.168.171.137    绑定服务器端地址
    port 873              服务端口
    log file = /var/log/rsyncd.log    日志的存放位置
    pid = /var/run/rsyncd.pid       进程pid文件位置

    [web]              共享名
            comment = backup       描述
            path = /test1         实际的文件目录
            read only = no        是否允许读取
            dont compress = *.gz *.bz2 *.zip  哪些文件不需要进行压缩传输
            auth users = zhangsan      虚拟用户名称
            secrets file = /etc/rsyncd_users.db  虚拟用户密码的存放位置及密码文件名称

    2、vi /etc/rsyncd_users.db  编写用户及对应的密码

    用户名:密码的形式

    3、chmod  600 /etc/rsyncd_users.db  修改文件权限

    4、rsync  --daemon   启动服务

    5、映射用户对其备份的目录有权限

      setfacl -m u:nobody:rwx  /test1

    6、测试

    下载格式:rsync -avz  rsync://用户名@服务器端IP地址/共享名  /本地目录

    上传格式:rsync -avz    /本地目录   rsync://用户名@服务器端IP地址/共享名 

     扩展:--delete 可以将服务器端中没有的,但是在客户端有的文件删除。

     若要想免密传输,则需要在客户端设置一环境变量。

    export  RSYNC_PASSWORD=虚拟用户密码

    五、rsync+inotifywait+脚本实现实时备份

    1、下载安装inotifywait

    wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

    yum -y install gcc*

    tar xzf inotify-tools-3.14.tar.gz

    ./configure && make && make install
    2、编写脚本  

    #!/bin/bash
    detection="inotifywait -mrq -e create,delete,modify /test1"    #检测/test1目录下,新建、删除、写入动作
    action="rsync -avz  /test1/* root@192.168.171.138:/test2"    #将/test1目录下的文件传输到另外一台设备的/test2目录下,用户是root。也可以使用普通系统用户或虚拟用户

    $detection | while read directory event file      #while判断是否收到监控记录

    do
            $action
    done     

    需要做免密验证

    六、实现双向数据传输(unsion+inotify)

    需要软件包:unison-2.13.16.tar.gz   ocaml-3.10.0.tar.gz   inotify-tools-3.14.tar.gz

    前两个软件一定要注意软件版本。我是centos7.5安装的,其他版本安装失败。

    1、安装inotify-tools-3.14.tar.gz

    yum -y install gcc*
    tar -xzf inotify-tools-3.14.tar.gz
    cd inotify-tools-3.14
    ./configure && make && make install

    2、安装ocaml-3.10.0.tar.gz (unison依赖此软件)

    tar -xzf ocaml-3.10.0.tar.gz
    cd ocaml-3.10.0
    ./configure   (** Objective Caml configuration completed successfully **  出现这个表示成功)
    make world opt
    make install

    3、安装unison-2.13.16.tar.gz

    tar -xzf unison-2.13.16.tar.gz
    cd unison-2.13.16
    make UISTYLE=text THREADS=true STATIC=true  (因为Makefile文件已经存在,不需要./configure。)
    cp unison /usr/local/bin/
    unison -version

     可以出现版本号,代表安装成功。同样的,另外一台也需要进行相同的安装即可。

    4、编写脚本,使其可以自动检测文件变化,自动进行文件同步。

    #!/bin/bash
    detection="inotifywait -mrq -e create,delete,modify /test1"
    action="/usr/local/bin/unison -bash /test1/  ssh://192.168.171.138//test2/"

    $detection | while read directory event file

    do
            $action
    done    
    脚本两边都是上面的代码,唯一不同点是:其中的 IP//目录 是对端的 IP//目录。

    5、建立ssh互信。

    ssh-keygen -t rsa -b 2048   (一直回车)

    ssh-copy-id root@对端IP地址  (第一次需输入一次yes)

    输入密码即可

    6、测试

    有时候在一端删除,另外一端还存在,这个没有影响,当下次同步的时候,会自动同步。

    本人小白一个^^ QQ:641055499,欢迎骚扰!
  • 相关阅读:
    等保2.0实施流程
    Python 使用xlsxwriter绘制Excel表格
    洞悉DAST、SAST、IAST -- Web应用安全测试技术对比浅谈
    CVE-2020-5398:Spring MVC_RFD
    Power Apps component framework (PCF) 手把手入门实例
    Kali: MSF meterpreter command
    Kali: VMware network disappear
    FlashFXP最新密钥-FlashFXP永久授权注册码分享
    简洁404页面源码 | 自适应404页面HTML好看的404源码下载
    mysql下的information与concat
  • 原文地址:https://www.cnblogs.com/641055499-mozai/p/15500951.html
Copyright © 2011-2022 走看看