#!/bin/bash # 簡化版文件歸檔腳本 (扁平化歸檔) # 使用方法: ./archive_file.sh <文件路徑> <原因> # 檔案格式: YYYYMMDDHHMMSS_原檔名 if [ $# -lt 2 ]; then echo "使用方法: $0 文件路徑 原因" exit 1 fi SOURCE_FILE="$1" REASON="$2" OPERATOR="${3:-Claude Code}" # 檢查文件是否存在 if [ ! -f "$SOURCE_FILE" ]; then echo "❌ 文件不存在: $SOURCE_FILE" exit 1 fi # 創建歸檔目錄 (直接使用 sop/archive,不建立日期子資料夾) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ARCHIVE_DIR="$SCRIPT_DIR/../archive" LOG_DIR="$SCRIPT_DIR/../archive/logs" mkdir -p "$ARCHIVE_DIR" mkdir -p "$LOG_DIR" # 生成新文件名 (完整時間戳記前綴 YYYYMMDDHHMMSS) FILENAME=$(basename "$SOURCE_FILE") TIMESTAMP=$(date '+%Y%m%d%H%M%S') ARCHIVED_FILENAME="${TIMESTAMP}_${FILENAME}" TARGET_FILE="$ARCHIVE_DIR/$ARCHIVED_FILENAME" # 移動文件 mv "$SOURCE_FILE" "$TARGET_FILE" if [ $? -eq 0 ]; then echo "✅ 歸檔成功: $SOURCE_FILE -> $TARGET_FILE" # 記錄日誌 LOG_ENTRY="[$(date '+%Y-%m-%d %H:%M:%S')] ARCHIVE | $SOURCE_FILE -> $TARGET_FILE | $OPERATOR | $REASON" echo "$LOG_ENTRY" >> "$LOG_DIR/file_migration.log" echo "📋 日誌記錄: $LOG_ENTRY" else echo "❌ 歸檔失敗: $SOURCE_FILE" exit 1 fi