48 lines
1.3 KiB
Bash
Executable File
48 lines
1.3 KiB
Bash
Executable File
#!/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 |