返回顶部
首页 > 资讯 > 操作系统 >如何用linux批量备份服务器配置文件和目录的脚本
  • 618
分享到

如何用linux批量备份服务器配置文件和目录的脚本

2023-06-09 19:06:25 618人浏览 薄情痞子
摘要

本篇内容介绍了“如何用linux批量备份服务器配置文件和目录的脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能:1. 只在备份机执行,

本篇内容介绍了“如何用linux批量备份服务器配置文件和目录的脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

功能:
1. 只在备份机执行,远程的服务器只需要允许备份机用root通过密钥登录;
2. 在备份机上配置需要备份哪些服务器,在NEED_BACKUP_SERVERS这个数组增减;
3. 在备份机上配置需要备份服务器上哪些文件,在NEED_BACKUP_DETaiL这个数组增减,如果需要备份某台服务器上NEED_BACKUP_DETAIL数组里定义的某个文件就备份,不存在的文件则自动跳过,例如WEB服务器上没my.cnf , 也没有影响;
4. 如果服务器上产生的新备份和已经存在已往备份内容一样则只保留时间较早的备份。因为服务器的配置文件不是经常改动的;
5. 通过修改定义KEEP_BACKUP_NUM为个变量,可以决定远程服务器上保留最近多少份备份,我这里定义的是10份。备份机上保留所有远程服务器的备份。因为配置文件都比较小,不用担心磁盘空间占用问题。

用过下列技术:
1. 获取远程服务器IP,如果某台服务器没有公网IP则使用该服务器的“主机名_IP.备份年月日_备份时间.tar.gz
2. 通过循环、判断,对数组中的元素重新赋值;

下载之后请留意版本号和更新日志

代码如下:

#!/bin/bash
##################################################################
# Backup_Config_Files_Of_Remote_Servers
# Env: Centos 5.5 x86_64
# Created by Hernan on 2011-04-06
# Copyright 2010 __Chengyongxu.com__. All rights reserved.
#
# Version: 1.4.6
# Revision History
##################################################################

# Local Tmp Dir Of This Script
THIS_SCRIPT_TMP=/tmp/Do_at_remote_server.sh
THIS_SCRIPT_TMP_NAME=`echo $THIS_SCRIPT_TMP|awk -F/ '{print $NF}'`
# Local Backup Dir
LOCAL_BACKUP_DIR=/tmp/IDC_config_backup

# Need Backup Servers And Files List
REMOTE_SERVER_TMP_DIR=/tmp/Backup_server_config_files_tmp
NEED_BACKUP_SERVERS=(\
10.0.0.52
server_a_ip \
server_b_ip \
server_c_ip \
server_d_ip \
chengyongxu.com \
)
NEED_BACKUP_DETAIL=(\
/etc/hosts \
/etc/Httpd/conf/*.conf \
/etc/httpd/conf.d/*.conf \
/etc/keepalived/keepalived.conf
/etc/my.cnf \
/etc/postfix \
/root/bin/*sh \
/usr/local/nagiOS/etc/nagios.cfg \
/usr/local/nagios/etc/objects/*cfg \
/usr/local/Nginx/conf \
/usr/local/PHP/etc/php.ini \
/usr/local/php/etc/php-fpm.conf \
/usr/local/php-fcgi/etc/php.ini \
/usr/local/php-fcgi/etc/php-fpm.conf \
/usr/local/sphinx/etc/*.conf \
/var/spool/cron \
)
KEEP_BACKUP_NUM=10

ssh_PORT=22
SSH_USER=root

##################################################################
#
# Global Functions
#
##################################################################

#========= !!!! Warning ! Don't edit next function !!!! =========#
# Create Script Tmp File
Create_Script (){
cat << EOF > $THIS_SCRIPT_TMP
#!/bin/bash

NEED_BACKUP_DETAIL=(${NEED_BACKUP_DETAIL[*]})

# How many nums the backup needed
BAKNUM=$KEEP_BACKUP_NUM

REMOTE_SERVER_TMP_DIR=$REMOTE_SERVER_TMP_DIR
SERVER_IP=\`/sbin/ifconfig|grep "inet addr"|cut -f 2 -d ":"|cut -f 1 -d " "|grep -vE "^10.|^127|^172.16|^192.168"\`
BACKUP_TIME=\`date +%Y%m%d_%H%M\`

##################################################################
#
# Compress NEED_BACKUP_DETAIL
#
##################################################################
# If IPv4 private address only, use hostname.ip
if [ -z \$SERVER_IP ]
then
    SERVER_IP=\`hostname\`_\`/sbin/ifconfig|grep "inet addr"|cut -f 2 -d ":"|cut -f 1 -d " "|grep -vE "^127"|head -n 1\`
fi

# Create Tpm dir
if [ ! -d \$REMOTE_SERVER_TMP_DIR ]
then
    mkdir -p \$REMOTE_SERVER_TMP_DIR
fi

# Compress
for file in \${NEED_BACKUP_DETAIL[*]}
do
    # When you want to backup the file exists,
    #   assign to an element of the new array
    while [ -e \$file ]
    do
        NEED_BACKUP_DETAIL_EXISTS[\$num]=\$file
        let num++
    break
    done
done
tar zcfpP \$REMOTE_SERVER_TMP_DIR/\$SERVER_IP.\$BACKUP_TIME.tar.gz \${NEED_BACKUP_DETAIL_EXISTS[*]}

##################################################################
#
# If files are the same,keep one only
#
##################################################################
NEW_BACKUP_ARCHive_CONTENT=\`tar tvf \$REMOTE_SERVER_TMP_DIR/\$SERVER_IP.\$BACKUP_TIME.tar.gz\`
for backfile in \`ls \$REMOTE_SERVER_TMP_DIR | grep tar.gz |grep -v \$SERVER_IP.\$BACKUP_TIME\`
do
    OLD_BACKUP_ARCHIVE_CONTENT=\`tar tvf \$REMOTE_SERVER_TMP_DIR/\$backfile\`
    while [ "\$NEW_BACKUP_ARCHIVE_CONTENT" = "\$OLD_BACKUP_ARCHIVE_CONTENT" ]
    do
        rm -rvf \$REMOTE_SERVER_TMP_DIR/\$SERVER_IP.\$BACKUP_TIME.tar.gz 1 >> \$REMOTE_SERVER_TMP_DIR/delete_new.log
    break
    done
done

##################################################################
#
# Keep Some Backup Files Newest
#
##################################################################
count=0
for name in \`ls \$BAKPATH/ |grep -E '[0-9]{6,6}' | sort -r\`
do
  count=\$((count+1))
  if [ \$count -gt \$BAKNUM ] ; then
    echo -n "Cleaning old backup: \$name... "
      if [ "\$BAKPATH/\$name" = "/" ] ; then
        echo "No rm -rf /!"
        exit 1
      fi
      rm -rf \$BAKPATH/\$name
    echo " Done."
  else
    echo "Keeping old backup: \$name"
  fi
done
exit
EOF
}

Copy_Script_To_Remote (){
for server in ${NEED_BACKUP_SERVERS[*]}
do
ssh -p $SSH_PORT -tt $SSH_USER@$server << EOT
mkdir -p $REMOTE_SERVER_TMP_DIR
exit
EOT
scp -P $SSH_PORT $THIS_SCRIPT_TMP $SSH_USER@$server:$REMOTE_SERVER_TMP_DIR/
done
}

Backup_On_Remote_Then_Copy_Back (){
for server in ${NEED_BACKUP_SERVERS[*]}
do
ssh -p $SSH_PORT -tt $SSH_USER@$server << EOP
chmod o+x $REMOTE_SERVER_TMP_DIR/$THIS_SCRIPT_TMP_NAME
sh $REMOTE_SERVER_TMP_DIR/$THIS_SCRIPT_TMP_NAME
rm -f $REMOTE_SERVER_TMP_DIR/$THIS_SCRIPT_TMP_NAME
exit
EOP
rsync -e "ssh -p $SSH_PORT" $SSH_USER@$server:$REMOTE_SERVER_TMP_DIR/*tar.gz $LOCAL_BACKUP_DIR/
done
}

##################################################################
#
# Main
#
##################################################################
#
Create_Script
Copy_Script_To_Remote
Backup_On_Remote_Then_Copy_Back
rm -rf $THIS_SCRIPT_TMP

“如何用linux批量备份服务器配置文件和目录的脚本”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何用linux批量备份服务器配置文件和目录的脚本

本文链接: https://lsjlt.com/news/257649.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用linux批量备份服务器配置文件和目录的脚本
    本篇内容介绍了“如何用linux批量备份服务器配置文件和目录的脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能:1. 只在备份机执行,...
    99+
    2023-06-09
  • linux批量备份服务器配置文件和目录的脚本
    功能:1. 只在备份机执行,远程的服务器只需要允许备份机用root通过密钥登录;2. 在备份机上配置需要备份哪些服务器,在NEED_BACKUP_SERVERS这个数组增减;3. 在备份机上配置需要备份服务...
    99+
    2022-06-04
    配置文件 批量 脚本
  • 如何使用rsync备份文件/目录到Linux服务器上的Shell脚本
    这篇文章将为大家详细讲解有关如何使用rsync备份文件/目录到Linux服务器上的Shell脚本,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用该脚本会以交互的方式实施备份,你需要提供远程...
    99+
    2023-06-28
  • Linux系统如何配置文件简易shell备份脚本
    这篇文章主要为大家展示了“Linux系统如何配置文件简易shell备份脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统如何配置文件简易shell备份脚本”这篇文章吧。在计算机科学...
    99+
    2023-06-05
  • 如何配置RSync文件备份同步Linux服务器
    这篇文章主要介绍“如何配置RSync文件备份同步Linux服务器”,在日常操作中,相信很多人在如何配置RSync文件备份同步Linux服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何配置RSync文件...
    99+
    2023-06-12
  • 如何使用Git备份Linux配置文件
    这篇文章给大家分享的是有关如何使用Git备份Linux配置文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们使用 Linux 服务器时,有时候需要备份配置文件。传统的备份方法是复制文件,改名,并在文件结尾插入...
    99+
    2023-06-16
  • 如何用Shell脚本统计当前目录下目录和文件的数量
    这篇文章主要讲解了“如何用Shell脚本统计当前目录下目录和文件的数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Shell脚本统计当前目录下目录和文件的数量”吧!下面用shell写...
    99+
    2023-06-09
  • 如何实现批量转换目录下文件编码的shell脚本
    这篇文章将为大家详细讲解有关如何实现批量转换目录下文件编码的shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一例批量转换目录下文件编码的shell脚本代码。需求描述:由于从window转lin...
    99+
    2023-06-09
  • linux 服务器自动备份脚本的方法(mysql、附件备份)
    一、创建backup.sh脚本文件 #!/bin/sh SOURCE_FOLDER=/data DB_FOLDER=/data/db BACKUP_FOLDER=/data/backup TM=`date +%Y%m...
    99+
    2022-06-04
    linux 服务器自动备份脚本 linux 备份脚本 linux 自动备份
  • 使用bat脚本怎么批量提取指定目录下的文件名
    使用bat脚本怎么批量提取指定目录下的文件名?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。核心代码@echo offecho text input...
    99+
    2023-06-08
  • Linux如何批量清空当前目录中的日志文件
    小编给大家分享一下Linux如何批量清空当前目录中的日志文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Linux中,有时需要批量清空当前目录中的日志文件,同...
    99+
    2023-06-12
  • Linux如何批量更改目录中所有文件的时间
    要批量更改目录中所有文件的时间,可以使用touch命令结合find命令来实现。以下是一个示例: 假设要更改目录/path/to/di...
    99+
    2024-04-02
  • 如何编写一个监控LINUX目录和文件变化的Shell脚本
    本篇内容主要讲解“如何编写一个监控LINUX目录和文件变化的Shell脚本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写一个监控LINUX目录和文件变化的Shell脚本”吧!脚本1:将需...
    99+
    2023-06-09
  • linux跨服务器复制文件方式(scp含脚本批量复制)
    目录前言1.纯命令复制方式1.1 单个文件复制1.2 文件夹复制2. 脚本方式批量分发2.1 创建脚本文件 scp.sh2.2 创建分发目标机器ip文件 demoIplist.txt2.3 创建分发目标机器passwor...
    99+
    2023-03-31
    linux复制文件 scp批量复制 跨服务器复制文件
  • 如何利用PHP脚本在Linux服务器上进行数据备份
    在日常的网站运维工作中,数据备份是一项重要的任务。有了完善的数据备份策略,可以确保网站数据的安全和可靠性。本文将介绍如何利用PHP脚本在Linux服务器上进行数据备份,并提供具体的代码示例。在Linux服务器上进行数据备份可以借助一些常用的...
    99+
    2023-10-21
    - Linux服务器 - 数据备份 - PHP备份脚本
  • 如何使用Bash脚本列出文件、目录、可执行文件和链接
    这篇文章主要为大家展示了“如何使用Bash脚本列出文件、目录、可执行文件和链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Bash脚本列出文件、目录、可执行文件和链接”这篇文章吧。一个...
    99+
    2023-06-16
  • 阿里云服务器如何备份到本地文件
    一、选择备份存储设备 首先,您需要选择一个可靠的备份存储设备。阿里云提供多种备份存储设备,包括云盘、硬盘、U盘等。您可以根据需要选择最适合您的备份存储设备。 二、选择备份存储设备 接下来,您需要选择一个可靠的备份存储设备。阿里云的备份存储...
    99+
    2023-10-28
    阿里 备份 本地文件
  • 如何编写一键备份gitolite服务器的Shell脚本
    这篇文章主要介绍“如何编写一键备份gitolite服务器的Shell脚本”,在日常操作中,相信很多人在如何编写一键备份gitolite服务器的Shell脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何编...
    99+
    2023-06-09
  • Linux cp命令如何创建文件和目录的副本
    今天给大家介绍一下Linux cp命令如何创建文件和目录的副本。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。在Linux系统中拷贝文件和目录是一个熟练掌握操作...
    99+
    2023-06-28
  • linux如何批量解压当前目录下以.zip结尾的所有文件到指定目录
    小编给大家分享一下linux如何批量解压当前目录下以.zip结尾的所有文件到指定目录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!批量解压当前目录下以.zip结尾...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作