多服务器的Rsync备份脚本

罗曼

我有一个简单的脚本,可以使用rsync通过ssh从远程服务器备份数据。

我有外部配置文件。在此配置文件中,我具有变量:OPTIONS,REMOTE_IP,SOURCE和DESTINATION。

现在,我需要添加更多的远程服务器,并开始对多个服务器使用单个脚本。我想用配置中的部分(例如[SERVER_01],[SERVER_02] ...)定义它。

脚本:

# You can provide external configuration file if you specify it with -c option
# Then if you haven't specified it, use one from ~/rsync_script/config.cfg

if [[ $1 == -c ]]; then
    CONFIG_FILE=$2
else
    CONFIG_FILE=~/rsync_script/config.cfg
fi


# Add constants from config file to script's environment

if [[ -f $CONFIG_FILE ]]; then
    . $CONFIG_FILE
fi


# Create full path before running rsync, because rsync cannot mkdir with -p option
# Run rsync with parameters from config.cfg and put files to $DESTINATION/$REMOTE_IP/YYYY-MM-DD

if [[ -d $DESTINATION ]]; then
    mkdir -p $DESTINATION$REMOTE_IP/$(date +"%A")
    rsync -avx \
        --timeout=30 \
        $OPTIONS \
        rsync@$REMOTE_IP:$SOURCE $DESTINATION$REMOTE_IP/$(date +"%F")
else
        echo "failure"
fi

配置:

# Set extra options for rsync command
OPTIONS="--itemize-changes --log-file=changes.log"
# Set IP address of server the you want to backup
REMOTE_IP="192.168.11.123"
# Set the folder on remote server to backup
SOURCE="/home/rsync/somedata"
# Set the destination folder on local machine
DESTINATION="/backup/"

请给我建议解决此问题的最佳方法

欢迎任何代码注释和建议:)

谢谢

这里

这是一个可能的情况。将您现有的rsync代码(if [[ -d $DESTINATION ...)放入shell函数中,例如runbackup,然后用. $CONFIG_FILE读取文件并查找[SERVER_...]节分隔符的循环替换执行该操作部分。找到一个后,它将调用runbackup函数(第一个函数除外)。对于其他行,它eval就像在每行上一样.为了确保在最后一节中调用runbackup,将一个虚拟[END]节添加到输入中。

(cat $CONFIG_FILE; echo '[END]') |
while read line
do if [[ "$line" =~ ^\[([A-Z_0-9]+)\] ]]
   then if [ -n "$OPTIONS" -a -n "$REMOTE_IP" ]
        then echo "section $section"
             runbackup
        fi
        section=${BASH_REMATCH[1]} # captured from =~ regex above
        unset OPTIONS REMOTE_IP SOURCE DESTINATION
   else eval $line
   fi
done 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

服务器中的备份脚本

来自分类Dev

使用 rsync Ubuntu 服务器 16.04 整体备份

来自分类Dev

备份MySQL服务器

来自分类Dev

完整的服务器备份

来自分类Dev

如何通过SSH使用rsync远程备份整个Linux服务器?

来自分类Dev

在脚本上输入密码以使rsync登录到远程服务器以完成rsync

来自分类Dev

从ubuntu服务器备份的最佳服务

来自分类Dev

在ubuntu 12.04服务器上安全备份sqlite3数据库的脚本

来自分类Dev

Bash脚本备份服务器上载文件夹

来自分类Dev

在ubuntu 12.04服务器上安全备份sqlite3数据库的脚本

来自分类Dev

Windows Azure服务器的映像备份

来自分类Dev

备份最新的Ubuntu服务器

来自分类Dev

Hyper-V服务器备份

来自分类Dev

服务器备份到github

来自分类Dev

Windows Azure服务器的映像备份

来自分类Dev

服务器的备份解决方案?

来自分类Dev

家庭服务器的计划备份

来自分类Dev

BackupPC不备份Windows服务器

来自分类Dev

多授权服务器

来自分类Dev

Bash-服务器的rsync列表

来自分类Dev

rsync到多个远程服务器

来自分类Dev

tar与远程服务器的Rsync内容

来自分类Dev

抑制rsync中的服务器消息

来自分类Dev

用于备份服务器上每个数据库但省略系统数据库的脚本

来自分类Dev

多服务器到单服务器

来自分类Dev

如何在mongodb的辅助服务器中进行备份

来自分类Dev

服务器xxxx的SQL Server备份失败

来自分类Dev

带刀备份的厨师服务器显示错误

来自分类Dev

在启动服务器上自动备份/还原