48 lines
1.2 KiB
Bash
Executable File
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 |