备份脚本 #
一、基本备份 #
bash
#!/bin/bash
backup_file() {
local source="$1"
local backup_dir="${2:-/backup}"
local date=$(date +%Y%m%d)
local filename=$(basename "$source")
cp "$source" "${backup_dir}/${filename}.${date}.bak"
}
二、目录备份 #
bash
#!/bin/bash
backup_directory() {
local source="$1"
local backup_dir="${2:-/backup}"
local date=$(date +%Y%m%d_%H%M%S)
local dirname=$(basename "$source")
tar -czf "${backup_dir}/${dirname}_${date}.tar.gz" -C "$(dirname "$source")" "$dirname"
}
三、增量备份 #
bash
#!/bin/bash
incremental_backup() {
local source="$1"
local backup_dir="$2"
local date=$(date +%Y%m%d)
local logfile="${backup_dir}/backup.log"
rsync -av --delete \
--log-file="$logfile" \
"$source/" "${backup_dir}/current/"
# 创建硬链接快照
cp -al "${backup_dir}/current" "${backup_dir}/${date}"
}
四、完整备份脚本 #
bash
#!/bin/bash
set -e
BACKUP_DIR="/backup"
SOURCE_DIR="/data"
RETENTION_DAYS=7
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
backup() {
local date=$(date +%Y%m%d_%H%M%S)
local backup_file="${BACKUP_DIR}/backup_${date}.tar.gz"
log "开始备份: $SOURCE_DIR"
tar -czf "$backup_file" "$SOURCE_DIR"
log "备份完成: $backup_file"
# 清理旧备份
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +$RETENTION_DAYS -delete
log "清理完成"
}
backup
下一步 #
你已经掌握了备份脚本,接下来让我们学习 自动化部署!
最后更新:2026-03-27