avatar

LeapHeap Journal

Record moments.

  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
主页 [已弃用] Linux通过shell脚本+cron进行定期备份
文章

[已弃用] Linux通过shell脚本+cron进行定期备份

发表于 2025-07-11 更新于 昨天
作者 LeapHeap
4~5 分钟 阅读
  1. 创建备份脚本。以下是一个例子:

#!/bin/bash

# 备份脚本配置
SOURCE_DIR="/opt/mc_servers/1.21.1-Fabric/world"       # 需要备份的源目录
BACKUP_DIR="/mnt/syn_nfs_mnt/backup/mc_servers/1211_Fabric"      # 备份存放目录
BACKUP_PREFIX="backup_mcs_1211Fabric"            # 备份文件前缀
LOG_FILE="/var/log/mcs_1211Fabric_backup.log"     # 日志文件路径
MAX_BACKUPS=7                      # 最大保留备份数量

# 创建日志函数
log() {
    local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
    echo "[${timestamp}] $1" | tee -a "$LOG_FILE"
}

# 检查源目录是否存在
if [ ! -d "$SOURCE_DIR" ]; then
    log "错误: 源目录 $SOURCE_DIR 不存在!"
    exit 1
fi

# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
if [ $? -ne 0 ]; then
    log "错误: 无法创建备份目录 $BACKUP_DIR!"
    exit 1
fi

# 创建带时间戳的备份文件名
BACKUP_NAME="${BACKUP_PREFIX}$(date +%Y%m%d_%H%M%S).tar.gz"
BACKUP_PATH="${BACKUP_DIR}/${BACKUP_NAME}"

log "开始备份: 从 $SOURCE_DIR 到 $BACKUP_PATH"

# 执行备份
tar -czf "$BACKUP_PATH" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")"
if [ $? -eq 0 ]; then
    log "备份成功完成: $BACKUP_PATH"
else
    log "错误: 备份过程中出现错误!"
    exit 1
fi

# 清理旧的备份
BACKUP_COUNT=$(ls -1 "${BACKUP_DIR}/${BACKUP_PREFIX}"*.tar.gz 2>/dev/null | wc -l)
if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
    log "发现 $BACKUP_COUNT 个备份,超过最大保留数 $MAX_BACKUPS,开始清理..."
    ls -t "${BACKUP_DIR}/${BACKUP_PREFIX}"*.tar.gz | tail -n +$(($MAX_BACKUPS + 1)) | while read -r old_backup; do
        log "删除旧备份: $old_backup"
        rm -f "$old_backup"
    done
    log "清理完成"
fi

log "备份任务完成"
exit 0
  1. 创建logrotate,防止日志过大:sudo nano /etc/logrotate.d/mcs_1211Fabric_backup

/var/log/mcs_1211Fabric_backup.log {
    weekly
    missingok
    rotate 4
    compress
    delaycompress
    notifempty
    create 0640 root root
}
  1. 创建cron计划任务:sudo nano /etc/cron.d/mcs_1211Fabric_backup

30 1 * * * root /opt/mc_servers/backup_scripts/mcs_1211Fabric_backup.sh

此任务将会在每天01:30执行。

日志, 技术
许可协议:  CC BY 4.0
分享

相关文章

2月 3, 2026

如何在OpenWrt上优雅地配置docker网络

前言 当docker在op宿主机上运行时,网络总是因为openwrt作为家庭网关的特殊性而配置坑点重重。在最新的openwrt上,在docker里通过docker compose自动创建或者用第三方管理面板默认创建的网络默认不能访问互联网,和op所在的局域网之间也没有直接路由,信息传输仅通过publ

12月 21, 2025

解决1Panel新版创建网站关联php时导致typecho后台无法使用

新版1Panel创建网站时默认使用的php配置为 location ~ [^/]\.php(/|$) { fastcgi_pass 127.0.0.1:9000; include fastcgi-php.conf; include fastc

11月 29, 2025

[备忘] Nikki局域网代理屏蔽指定IP

注意点:优先匹配的规则必须排在上面,不然不生效。

下一篇

解决地平线5卡死崩溃问题

上一篇

RHEL10使用tuned开启性能模式

最近更新

  • 如何在OpenWrt上优雅地配置docker网络
  • [转载] Openwrt下dnsmasq强行清理某个DHCP租约
  • 解决1Panel新版创建网站关联php时导致typecho后台无法使用
  • [备忘] Nikki局域网代理屏蔽指定IP
  • docker部署emby破解版,并直通Intel核显

热门标签

Halo 服务器 Web 博客 OpenWrt

目录

©2026 LeapHeap Journal. 保留部分权利。

使用 Halo 主题 Chirpy