zhensolid 1 yıl önce
ebeveyn
işleme
54761299ed
1 değiştirilmiş dosya ile 63 ekleme ve 0 silme
  1. 63 0
      backup.sh

+ 63 - 0
backup.sh

@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# 基础配置
+backup_dir="/mnt/mydata/backup"  # 本地备份路径
+data_dir="/mnt/mydata"    # 要备份的目录
+hostname=$(hostname)      # 获取主机名
+cloud_dir="backup/$hostname"  # 云端存储路径,使用hostname区分
+log_file="/var/log/bypy_backup.log"  # 日志文件
+
+# 日志函数
+log_message() {
+    echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" >> "$log_file"
+    echo "$1"
+}
+
+# 创建本地备份目录
+mkdir -p "$backup_dir"
+
+# 生成备份文件名
+backup_file="backup-$hostname-$(date +'%Y-%m-%d').tar.gz"
+backup_path="$backup_dir/$backup_file"
+
+# 1. 首先创建新备份
+log_message "开始创建备份文件..."
+tar -czf "$backup_path" \
+    --exclude="$data_dir/.Recycle_bin" \
+    --exclude="$backup_dir" \
+    "$data_dir" 2>/dev/null
+
+if [ $? -eq 0 ]; then
+    log_message "备份文件创建成功: $backup_path"
+else
+    log_message "备份文件创建失败"
+    exit 1
+fi
+
+# 2. 然后清理本地旧备份
+num_local_backups=$(ls -l "$backup_dir" | grep ^- | grep 'backup-' | wc -l)
+if [ $num_local_backups -gt 1 ]; then
+    oldest_local_backup=$(ls -t "$backup_dir" | grep 'backup-' | tail -1)
+    rm "$backup_dir/$oldest_local_backup"
+    log_message "删除本地旧备份: $oldest_local_backup"
+fi
+
+# 3. 最后同步到云端
+log_message "确保云端目录存在..."
+/www/server/pyporject_evn/versions/3.13.0/bin/bypy mkdir "$cloud_dir"
+
+# 添加 -v 参数显示详细进度,并记录到日志
+log_message "开始上传到云端..."
+/www/server/pyporject_evn/versions/3.13.0/bin/bypy -v syncup "$backup_dir" "$cloud_dir" 2>&1 | while IFS= read -r line; do
+    # 只记录有用的信息
+    if [[ $line == *"["* ]] || [[ $line == *"Done"* ]] || [[ $line == *"OK"* ]]; then
+        echo "$line"
+        echo "$(date +'%Y-%m-%d %H:%M:%S') - $line" >> "$log_file"
+    fi
+done
+
+log_message "备份流程完成"
+
+# 显示当前云端备份列表
+log_message "当前云端备份列表:"
+/www/server/pyporject_evn/versions/3.13.0/bin/bypy list "$cloud_dir" >> "$log_file"