阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

rsync 网站自动化备份利器

439次阅读
没有评论

共计 9268 个字符,预计需要花费 24 分钟才能阅读完成。

rsync 是类 unix 系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他 SSH、rsync 主机同步。与传统的 cp、scp、tar 备份方式相比,rsync 具有安全性高、备份迅速、支持增量备份等优点,通过 rsync 可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。
   
环境
CentOS 5.8(64)  192.168.23.130 (service)
centos 5.8(64)  192.168.23.131 (client)
软件
rsync-3.1.1.tar.gz(http://rsync.samba.org/)
安装步骤
1. 前期的准备条件
    a. 关闭 selinux、防火墙(个人习惯不管什么情况下,自己玩都是必须关闭)
    b.yum install -y make gcc
2. 安装 rsync(service、client)
    a.tar -zxf rsync-3.1.1.tar.gz
    b.cd rsync-3.1.1
    c. ./configure –prefix=/usr/local/rsync
    d.make
    e.make install
3. 配置 rsync
    a.vim /etc/rsyncd.conf(service)
        uid = root                       
        gid = root
        use chroot = no
        [apps]
        auth users = root
        secrets file = /etc/rsyncd.passwd
        munge symlinks = no
        read only = no
        path=/data/test
    b.vim /etc/rsyncd.passwd(service)
        root:111111
    c.vim /etc/rsync.passwd(client)
        111111
4. 启动 rsync(service)
    /usr/local/rsync/bin/rsync –daemon –config=/etc/rsyncd.conf
5. 同步文件(client)
    /usr/local/rsync/bin/rsync -vzrtopg –progress –delete rsync://root@192.168.23.131/apps /tmp/tmp/ –password-file=/etc/rsync.pas (service->client)
    /usr/local/rsync/bin/rsync -vzrtopg –progress –delete /tmp/tmp/ rsync://root@192.168.23.131/apps –password-file=/etc/rsync.pas (client->service)
6. 验证
    到相应的目录查看是否存在同步的文件
以后是手动运行的,对于比较懒的人肯定不适合,下边就介绍 Inotify-tools 工具,可以实现实时自动同步。Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。
7. 安装 Inotify-tools
    a.wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
    b.tar -zxf inotify-tools-3.14.tar.gz
    c.cd inotify-tools-3.14
    d. ./configure –prefix=/usr/local/inotify
    e.make
    f.make install
8. 编写 shell 脚本(rsync.sh)

#!/bin/sh

    #local dir
    dstdir=”/tmp/tmp/”

    #sync user
    rsyncuser=”root”

    #sync password
    rsyncpassword=”/etc/rsync.pas”

    #remote ip
    remoteip=”192.168.23.131″

    #remote module
    module=”apps”

    #sync remote server  module to local dir
    for ip in $remoteip
    do
        /usr/local/rsync/bin/rsync -vzrtopg –progress  –delete  $rsyncuser@$ip::$module  $dstdir  –password-file=$rsyncpassword
    done

    #monitor local dir, then rsync remote server module
    /usr/local/inotify/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f%e’ -e close_write,modify,delete,create,attrib,move $dstdir |  while read file
    do
        for ip in $remoteip
            do
                /usr/local/rsync/bin/rsync -vzrtopg –progress  –delete $dstdir  $rsyncuser@$ip::$module  –password-file=$rsyncpassword
                echo ”  ${file} was rsynced” >> /tmp/rsync.log 2>&1
            done
    done

9.chmod 755 rsync.sh

10. 运行 shell 脚本,并到相应的目录操作看是否操作成功

11. 设置开机自启动

echo “sh /usr/local/inotify/rsync.sh &” >> /etc/rc.d/rc.local

Rsync+inotify 实现 Git 数据实时同步备份 http://www.linuxidc.com/Linux/2014-10/108298.htm

Rsync 实现文件备份同步详解 http://www.linuxidc.com/Linux/2014-09/106967.htm

Rsync 同步两台服务器 http://www.linuxidc.com/Linux/2014-09/106574.htm

CentOS 6.5 下 Rsync 远程同步 http://www.linuxidc.com/Linux/2014-05/101084.htm

Ubuntu Linux 下用 Rsync 进行数据备份和同步配制 http://www.linuxidc.com/Linux/2014-03/97592.htm

Linux 使用 Rsync 客户端与服务端同步目录进行备份 http://www.linuxidc.com/Linux/2014-02/97068.htm

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-01/111435p2.htm

发散一下: 如果线上有多台 web 服务器,我们可以通过 rsync+Inotify 实现批量上传文件。其具体做法是: 确定一台 server 作为内容分发机,所有线上的服务器都通过 rsync+Inotify 的方式监控内容分发机,一旦有更新就实时的同步到线上,这也算一个小小的自动化运维吧。

命令参数说明
    1.rsyncd.conf 详解
        全局参数
        uid = root                                  // 运行 RSYNC 守护进程的用户
        gid = root                                  // 运行 RSYNC 守护进程的组
        use chroot = no                // 不使用 chroot
        max connections = 4            // 最大连接数为 4
        strict modes =yes                // 是否检查口令文件的权限
        port = 873                      // 默认端口 873
         
        模块参数
        [backup]                  // 这里是认证的模块名,在 client 端需要指定
        path = /home/backup/        // 需要做镜像的目录, 不可缺少!
        comment = This is a test      // 这个模块的注释信息
        ignore errors                // 可以忽略一些无关的 IO 错误
        read only = yes              // 只读
        list = no                  // 不允许列文件
        auth users = hening            // 认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
        secrets file = /etc/rsync.pas          // 密码和用户名对比表,密码文件自己生成
        hosts allow = 192.168.1.1,10.10.10.10      // 允许主机
        hosts deny = 0.0.0.0/0                  // 禁止主机
        #transfer logging = yes
        注释:下面这些绿色文件是安装完 RSYNC 服务后自动生成的文件
        pid file = /var/run/rsyncd.pid      //pid 文件的存放位置
        lock file = /var/run/rsync.lock    // 锁文件的存放位置
        log file = /var/log/rsyncd.log      // 日志记录文件的存放位置
    2.rsync 命令参数
        -v, –verbose 详细模式输出
        -q, –quiet 精简输出模式
        -c, –checksum 打开校验开关,强制对文件传输进行校验
        -a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于 -rlptgoD
        -r, –recursive 对子目录以递归模式处理
        -R, –relative 使用相对路径信息
        -b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用 –suffix 选项来指定不同的备份文件前缀。
        –backup-dir 将备份文件(如~filename) 存放在在目录下。
        -suffix=SUFFIX 定义备份文件前缀
        -u, –update 仅仅进行更新,也就是跳过所有已经存在于 DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
        -l, –links 保留软链结
        -L, –copy-links 想对待常规文件一样处理软链结
        –copy-unsafe-links 仅仅拷贝指向 SRC 路径目录树以外的链结
        –safe-links 忽略指向 SRC 路径目录树以外的链结
        -H, –hard-links 保留硬链结
        -p, –perms 保持文件权限
        -o, –owner 保持文件属主信息
        -g, –group 保持文件属组信息
        -D, –devices 保持设备文件信息
        -t, –times 保持文件时间信息
        -S, –sparse 对稀疏文件进行特殊处理以节省 DST 的空间
        -n, –dry-run 现实哪些文件将被传输
        -W, –whole-file 拷贝文件,不进行增量检测
        -x, –one-file-system 不要跨越文件系统边界
        -B, –block-size=SIZE 检验算法使用的块尺寸,默认是 700 字节
        -e, –rsh=COMMAND 指定使用 rsh、ssh 方式进行数据同步
        –rsync-path=PATH 指定远程服务器上的 rsync 命令所在路径信息
        -C, –cvs-exclude 使用和 CVS 一样的方法自动忽略文件,用来排除那些不希望传输的文件
        –existing 仅仅更新那些已经存在于 DST 的文件,而不备份那些新创建的文件
        –delete 删除那些 DST 中 SRC 没有的文件
        –delete-excluded 同样删除接收端那些被该选项指定排除的文件
        –delete-after 传输结束以后再删除
        –ignore-errors 及时出现 IO 错误也进行删除
        –max-delete=NUM 最多删除 NUM 个文件
        –partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
        –force 强制删除目录,即使不为空
        –numeric-ids 不将数字的用户和组 ID 匹配为用户名和组名
        –timeout=TIME IP 超时时间,单位为秒
        -I, –ignore-times 不跳过那些有同样的时间和长度的文件
        –size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
        –modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为 0
        -T –temp-dir=DIR 在 DIR 中创建临时文件
        –compare-dest=DIR 同样比较 DIR 中的文件来决定是否需要备份
        -P 等同于 –partial
        –progress 显示备份过程
        -z, –compress 对备份的文件在传输时进行压缩处理
        –exclude=PATTERN 指定排除不需要传输的文件模式
        –include=PATTERN 指定不排除而需要传输的文件模式
        –exclude-from=FILE 排除 FILE 中指定模式的文件
        –include-from=FILE 不排除 FILE 指定模式匹配的文件
        –version 打印版本信息
        –address 绑定到特定的地址
        –config=FILE 指定其他的配置文件,不使用默认的 rsyncd.conf 文件
        –port=PORT 指定其他的 rsync 服务端口
        –blocking-io 对远程 shell 使用阻塞 IO
        -stats 给出某些文件的传输状态
        –progress 在传输时现实传输过程
        –log-format=formAT 指定日志文件格式
        –password-file=FILE 从 FILE 中得到密码 权限 600
        –bwlimit=KBPS 限制 I / O 带宽,KBytes per second
    inotifywait 参数
        -m 是保持一直监听
        -r 是递归查看目录
        -q 是打印出事件
        -e create,move,delete,modify,attrib 是指“监听 创建 移动 删除 写入 权限”事件

Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里

rsync 是类 unix 系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他 SSH、rsync 主机同步。与传统的 cp、scp、tar 备份方式相比,rsync 具有安全性高、备份迅速、支持增量备份等优点,通过 rsync 可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。
   
环境
CentOS 5.8(64)  192.168.23.130 (service)
centos 5.8(64)  192.168.23.131 (client)
软件
rsync-3.1.1.tar.gz(http://rsync.samba.org/)
安装步骤
1. 前期的准备条件
    a. 关闭 selinux、防火墙(个人习惯不管什么情况下,自己玩都是必须关闭)
    b.yum install -y make gcc
2. 安装 rsync(service、client)
    a.tar -zxf rsync-3.1.1.tar.gz
    b.cd rsync-3.1.1
    c. ./configure –prefix=/usr/local/rsync
    d.make
    e.make install
3. 配置 rsync
    a.vim /etc/rsyncd.conf(service)
        uid = root                       
        gid = root
        use chroot = no
        [apps]
        auth users = root
        secrets file = /etc/rsyncd.passwd
        munge symlinks = no
        read only = no
        path=/data/test
    b.vim /etc/rsyncd.passwd(service)
        root:111111
    c.vim /etc/rsync.passwd(client)
        111111
4. 启动 rsync(service)
    /usr/local/rsync/bin/rsync –daemon –config=/etc/rsyncd.conf
5. 同步文件(client)
    /usr/local/rsync/bin/rsync -vzrtopg –progress –delete rsync://root@192.168.23.131/apps /tmp/tmp/ –password-file=/etc/rsync.pas (service->client)
    /usr/local/rsync/bin/rsync -vzrtopg –progress –delete /tmp/tmp/ rsync://root@192.168.23.131/apps –password-file=/etc/rsync.pas (client->service)
6. 验证
    到相应的目录查看是否存在同步的文件
以后是手动运行的,对于比较懒的人肯定不适合,下边就介绍 Inotify-tools 工具,可以实现实时自动同步。Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。
7. 安装 Inotify-tools
    a.wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
    b.tar -zxf inotify-tools-3.14.tar.gz
    c.cd inotify-tools-3.14
    d. ./configure –prefix=/usr/local/inotify
    e.make
    f.make install
8. 编写 shell 脚本(rsync.sh)

#!/bin/sh

    #local dir
    dstdir=”/tmp/tmp/”

    #sync user
    rsyncuser=”root”

    #sync password
    rsyncpassword=”/etc/rsync.pas”

    #remote ip
    remoteip=”192.168.23.131″

    #remote module
    module=”apps”

    #sync remote server  module to local dir
    for ip in $remoteip
    do
        /usr/local/rsync/bin/rsync -vzrtopg –progress  –delete  $rsyncuser@$ip::$module  $dstdir  –password-file=$rsyncpassword
    done

    #monitor local dir, then rsync remote server module
    /usr/local/inotify/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f%e’ -e close_write,modify,delete,create,attrib,move $dstdir |  while read file
    do
        for ip in $remoteip
            do
                /usr/local/rsync/bin/rsync -vzrtopg –progress  –delete $dstdir  $rsyncuser@$ip::$module  –password-file=$rsyncpassword
                echo ”  ${file} was rsynced” >> /tmp/rsync.log 2>&1
            done
    done

9.chmod 755 rsync.sh

10. 运行 shell 脚本,并到相应的目录操作看是否操作成功

11. 设置开机自启动

echo “sh /usr/local/inotify/rsync.sh &” >> /etc/rc.d/rc.local

Rsync+inotify 实现 Git 数据实时同步备份 http://www.linuxidc.com/Linux/2014-10/108298.htm

Rsync 实现文件备份同步详解 http://www.linuxidc.com/Linux/2014-09/106967.htm

Rsync 同步两台服务器 http://www.linuxidc.com/Linux/2014-09/106574.htm

CentOS 6.5 下 Rsync 远程同步 http://www.linuxidc.com/Linux/2014-05/101084.htm

Ubuntu Linux 下用 Rsync 进行数据备份和同步配制 http://www.linuxidc.com/Linux/2014-03/97592.htm

Linux 使用 Rsync 客户端与服务端同步目录进行备份 http://www.linuxidc.com/Linux/2014-02/97068.htm

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-01/111435p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计9268字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7961314
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...