dramaling-app/sop/scripts/archive_file.sh

48 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# 簡化版文件歸檔腳本
# 使用方法: ./archive_file.sh <文件路徑> <原因>
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)
DATE_DIR=$(date '+%Y-%m-%d')
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ARCHIVE_DIR="$SCRIPT_DIR/../archive/$DATE_DIR"
LOG_DIR="$SCRIPT_DIR/../archive/logs"
mkdir -p "$ARCHIVE_DIR"
mkdir -p "$LOG_DIR"
# 生成新文件名 (時間前綴)
FILENAME=$(basename "$SOURCE_FILE")
TIMESTAMP=$(date '+%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