热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UbuntuLinux下用rsync进行数据备份和同步配制

背景:0.服务器的数据是非常重要的,一旦发生磁盘损坏就麻烦了。作为一个管理人员,对数据进行实时地同步备份那是很有必要的。1.rsync是一个很好和备份工具,下面以Ubuntu为例讲一下它的配制。2.假如我的服务器A的ip为10.141.247.12,我的备份客户机B的ip为10.141.247.13服务器端的配制:1.打开rsync作为服务器的开关,修改文件/et

背景:

0. 服务器的数据是非常重要的,一旦发生磁盘损坏就麻烦了。作为一个管理人员,对数据进行实时地同步备份那是很有必要的。

1. rsync 是一个很好和备份工具,下面以Ubuntu为例讲一下它的配制。

2. 假如我的服务器A的ip为10.141.247.12, 我的备份客户机B的ip为10.141.247.13

服务器端的配制:

1. 打开rsync作为服务器的开关,修改文件/etc/default/rsync的内容其中一行如下(整个文件内容见链接)

RSYNC_ENABLE=true

2. 新建配制文件/etc/rsyncd.conf 内容如下(或者见链接)

#[globale]
strict modes = yes 
#rsync default port
port = 873
logfile = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid 
max cOnnections= 4
auth users = backup, user
secrets file = /etc/rsyncd.scrt

#[modules] each path responding to a module
[appbackup]
path = /home/aborn/backup
#hosts allow=9.4.122.24   

[databackup]
path = /home/data

说明:a) auth users 配制一定要和/etc/rsyncd.scrt里的用户名保持一致,但不一定是系统里的用户名,名字随便取

 

b) 要备份的每个路径为一个module,这里有两个路径分别对应module为[appbackup]和[databackup]

3. 新建密码文件/etc/rsyncd.scrt 对应内容如下:

backup:configurebackup@#$^&*()google
user:passwordpassword

这里有两个用户backup和user,冒号对应为密码,注意该文件属性为600 (其他用户没用读写执行权限)

 

4. 开启备份服务(开户后可用netstat -tupln查看873端口有没有打开,若打开则成功)

 sudo /etc/init.d/rsync start

客户端配制

 

1. 假如当前工作目录为~/backup

2. 在当前工作目录创建密码文件rsyncd.scrt,内容和服务器端保持一样,属性也为600

3. 在当前工作目录创建配制文件client.conf,内容如下:

BACKUPPATH="/home/aborn/backup/";
SERVERIP="10.141.247.12"
MODULE="appbackup databackup"
#OPTIOnS="-vazu --progress --delete"
OPTIOnS="-vazu --progress"

说明: 其中BACKUPPATH为客户端数据存放路径

 

SERVERIP为服务器A机器的IP地址

MODULE为对应于服务端的/etc/rsyncd.conf下的module,多个module以空格分开

4. 运行备份脚本 rsyncclient.sh,其内容如下

#!/bin/bash
##################################################################
# NAME
#    rsyncclient.sh  ---- running in client machine, which
#                      is used to backup data in client machine
#
# USAGE
#    ./rsyncclient.sh
#
# AUTHOR
#  Aborn Jiang (aborn.jiang@gmail.com)
#
# NOTE   
#  pls configure the file client.conf and rsyncd.scrt
#
##################################################################
ABSPATH=$(dirname $0)
source ${ABSPATH}/client.conf

function get-user-pwd()
{
# obtain usrname and password
    iUSR=$(cat ${ABSPATH}/rsyncd.scrt|tr -d ' ' |grep  -v "^$" | \
        grep -v "^#"|head -n 1|awk -F : '{print $1}')
    iPWD=$(cat ${ABSPATH}/rsyncd.scrt|tr -d ' ' |grep  -v "^$" | \
        grep -v "^#"|head -n 1|awk -F : '{print $2}')
    if [ -z ${iUSR} ] || [ -z ${iPWD} ];then
        echo "iUSR=$iUSR  iPWD=$iPWD"
        echo "rsyncd.scrt format illegal, please check!";
        exit -1;
    fi

# produce password file
    echo "$iPWD" > ${ABSPATH}/.pass
    chmod 600 ${ABSPATH}/.pass
    [ ! -d $BACKUPPATH ] && mkdir -p ${BACKUPPATH}
}


function backup-module()
{
# print key information
    iModule=$1
    echo
    echo "---------------------------------------------------"
    echo "---- backup module ${iModule}@${SERVERIP} begin "
    echo "---- TIME=`date`----"
    echo "ABSPATH=${ABSPATH}" 
    echo "BACKUPPATH=${BACKUPPATH}"
    echo "iUSR=$iUSR  iPWD=$iPWD"
    echo "OPTIOnS=${OPTIONS}"
    iModuleBackpath=${BACKUPPATH}/${iModule};
    [ ! -d ${iModuleBackpath} ] && mkdir -p ${iModuleBackpath}

# begin backup
    rsync  ${OPTIONS}  ${iUSR}@${SERVERIP}::${iModule}  ${iModuleBackpath} \
        --password-file=${ABSPATH}/.pass
    if [ $? != 0 ];then
        echo "---- backup module ${iModule}@${SERVERIP} failed."
    else
        echo "---- backup module ${iModule}@${SERVERIP} succuess. "
    fi
    echo "---- TIME=`date`----"
    echo "---------------------------------------------------"
    echo
}

function __main__()
{
    get-user-pwd
    for md in $MODULE
    do
        backup-module $md
    done
}

__main__

注:整个工程文件见我的GitHub这个链接configure.rsync

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

推荐阅读:

利用inotifywait监控主机文件和目录 http://www.linuxidc.com/Linux/2013-03/81075.htm

利用inotify+rsync实现Linux文件批量更新 http://www.linuxidc.com/Linux/2012-01/52132.htm

inotify-tools+rsync实时同步文件安装和配置 http://www.linuxidc.com/Linux/2012-06/63624.htm

rsync同步完整配置 http://www.linuxidc.com/Linux/2013-06/85781.htm


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
author-avatar
mobiledu2502878137
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有