每天解析一个脚本(一)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 【4月更文挑战第14天】shell脚本解析及训练(一)

在当今数字化时代,运维工作的重要性日益凸显。面对复杂多变的IT环境,高效的自动化工具和脚本成为每一位运维人员提升工作效率、保障系统稳定的关键利器。为了助力广大运维同行在日常工作中更加得心应手,我特此精心整理了一份实用的Shell脚本合集,旨在为大家提供一份“运维人的福利”,以期在繁琐的任务处理与系统管理中,助您一臂之力。

这份脚本集合凝聚了我个人在实际运维工作中积累的经验与智慧,涵盖了诸如服务器监控、故障排查、备份恢复、性能调优、自动化部署等诸多核心场景。每一行代码都经过实战打磨,力求简洁高效,易读易用,旨在适应各种复杂的运维环境,满足不同层次运维需求。无论您是初入运维领域的新人,还是经验丰富的资深专家,都能从中找到适合自己的工具,让繁杂的运维工作化繁为简,事半功倍。

在这里,我诚挚地邀请各位运维同仁随意拿取、自由分享这份Shell脚本资源。它们不仅是您日常工作的得力助手,更是交流学习、提升技能的良好素材。让我们共同携手,借助科技的力量,驱动运维工作的智能化、自动化进程,为构建稳定、高效的信息系统保驾护航。

今天我们要分析的是:

SVN 完整备份通过 hotcopy 进行 SVN 完整备份,备份保留 7 天

#!/bin/bash

# Filename : svn_backup_repos.sh

# Date : 2020/12/14

# Author : JakeTian

# Email : JakeTian@***.com

# Crontab : 59 23 * * * /bin/bash $BASE_PATH/svn_backup_repos.sh >/dev/null

2>&1

# Notes : 将脚本加入crontab中,每天定时执行

# Description: SVN完全备份

set -e

SRC_PATH="/opt/svndata"

DST_PATH="/data/svnbackup"

LOG_FILE="$DST_PATH/logs/svn_backup.log"

SVN_BACKUP_C="/bin/svnadmin hotcopy"

SVN_LOOK_C="/bin/svnlook youngest"

TODAY=$(date +'%F')

cd $SRC_PATH

ALL_REPOS=$(find ./ -maxdepth 1 -type d ! -name 'httpd' -a ! -name 'bak' | tr -d

'./')

# 创建备份目录,备份脚本日志目录

test -d DSTPATH||mkdirpDST_PATH || mkdir -p DST_PATH

test -d DSTPATH/logs||mkdirDST_PATH/logs || mkdir DST_PATH/logs

test -d DSTPATH/DST_PATH/TODAY || mkdir DSTPATH/DST_PATH/TODAY

# 备份repos文件

for repo in $ALL_REPOS

do

SVNBACKUPCSVN_BACKUP_C SRC_PATH/reporepo DST_PATH/TODAY/TODAY/repo

# 判断备份是否完成

if SVNLOOKCSVN_LOOK_C DST_PATH/TODAY/TODAY/repo;then

echo "TODAY:TODAY: repo Backup Success" >> $LOG_FILE

else

echo "TODAY:TODAY: repo Backup Fail" >> $LOG_FILE

fi

done

# # 备份用户密码文件和权限文件

cp -p authz access.conf DSTPATH/DST_PATH/TODAY

# 日志文件转储

mv LOGFILELOG_FILE LOG_FILE-$TODAY

# 删除七天前的备份

seven_days_ago=$(date -d "7 days ago" +'%F')

rm -rf DSTPATH/DST_PATH/seven_days_ago

脚本实现过程:

  1. 定义变量:
  • SRC_PATH:SVN仓库源路径(默认为"/opt/svndata")。
  • DST_PATH:备份文件存放的目标路径(默认为"/data/svnbackup")。
  • LOG_FILE:备份日志文件路径。
  • SVN_BACKUP_C:SVN hotcopy备份命令。
  • SVN_LOOK_C:获取SVN仓库最新修订版号的命令。
  • TODAY:当前日期,格式为“年-月-日”。
  1. 创建必要的目录结构:
  • 在目标路径下创建备份主目录(如果不存在的话)。
  • 在备份主目录下创建logs子目录和以当前日期命名的子目录,用于存放当日备份文件。
  1. 查找并备份所有SVN仓库:
  • 使用find命令在源路径下查找除"httpd"和"bak"以外的所有子目录(即SVN仓库)。
  • 对每个找到的仓库执行svnadmin hotcopy命令,将其完整备份到目标路径下对应日期的子目录中。
  1. 检查备份状态并记录日志:
  • 使用svnlook youngest命令检查备份后的仓库是否包含最新修订版。
  • 如果备份成功,将备份成功的消息(包括日期和仓库名)追加到备份日志文件中;否则,记录备份失败的消息。
  1. 备份用户密码文件和权限文件:
  • 将源路径下的"authz"和"access.conf"两个文件复制到目标路径下对应日期的子目录中。
  1. 重命名日志文件:
  • 将当前日志文件名后缀加上当前日期,便于区分不同日期的日志。
  1. 清理过期备份:
  • 计算7天前的日期(seven_days_ago)。
  • 删除目标路径下该日期对应的备份子目录及其内容。

如何使用:

  1. 修改配置:
  • 根据实际情况,调整SRC_PATHDST_PATH变量,确保它们分别指向实际的SVN仓库源路径和期望的备份目标路径。
  1. 添加到crontab:
  • 打开终端,输入crontab -e打开定时任务编辑器。
  • 在编辑器中,按照上述示例格式添加一行,指定脚本的完整路径和执行时间。
  • 保存并退出编辑器。

脚本将按照设定的时间自动执行,对SVN仓库进行完整备份,并保留最近7天的备份。备份状态和相关信息会记录在指定的日志文件中。同时,系统会自动删除超过保留期限(7天)的旧备份。

如果想上手操作练代码的同学们可以通过阿里云ecs服务器免费试用参与!

入口:新老同学免费试用

目录
相关文章
|
2月前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
180 3
|
3月前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
114 1
|
3月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
55 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
5月前
|
缓存 监控 安全
深入解析Elasticsearch中脚本原理
深入解析Elasticsearch中脚本原理
|
6月前
|
弹性计算 运维 Shell
每天解析一个shell脚本(75)
【4月更文挑战第28天】shell脚本解析及训练(75)
42 7
|
6月前
|
弹性计算 运维 Shell
每天解析一个shell脚本(76)
【4月更文挑战第28天】shell脚本解析及训练(76)
36 4
|
6月前
|
弹性计算 Shell Apache
每天解析一个shell脚本(78)
【4月更文挑战第28天】shell脚本解析及训练(78)
30 3
|
6月前
|
弹性计算 运维 Shell
每天解析一个shell脚本(83)
【4月更文挑战第28天】shell脚本解析及训练(83)
23 2
|
6月前
|
弹性计算 运维 Shell
每天解析一个shell脚本(81)
【4月更文挑战第28天】shell脚本解析及训练(81)
38 1

推荐镜像

更多