• 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,欢迎骚扰!
  • 相关阅读:
    Candy leetcode java
    Trapping Rain Water leetcode java
    Best Time to Buy and Sell Stock III leetcode java
    Best Time to Buy and Sell Stock II leetcode java
    Best Time to Buy and Sell Stock leetcode java
    Maximum Subarray leetcode java
    Word Break II leetcode java
    Word Break leetcode java
    Anagrams leetcode java
    Clone Graph leetcode java(DFS and BFS 基础)
  • 原文地址:https://www.cnblogs.com/641055499-mozai/p/15500951.html
Copyright © 2020-2023  润新知