Commit 69503a14 authored by 根津昂史's avatar 根津昂史

Initial commit

parents
receipt/
download_log_*.txt
failed_downloads_*.txt
summary_*.txt
\ No newline at end of file
#!/bin/bash
# 詳細な設定
BUCKET="itsmon-mileage-prod"
PREFIX="receipt/"
DOWNLOAD_DIR="downloads/receipt"
LOG_FILE="download_log_$(date +%Y%m%d_%H%M%S).txt"
FAILED_LOG="failed_downloads_$(date +%Y%m%d_%H%M%S).txt"
SUMMARY_LOG="summary_$(date +%Y%m%d_%H%M%S).txt"
# カラー設定
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# ディレクトリの作成
mkdir -p "$DOWNLOAD_DIR"
# ログ初期化
echo "Download started at $(date)" > "$LOG_FILE"
echo "S3 Path: s3://$BUCKET/$PREFIX" >> "$LOG_FILE"
# エラーハンドリング関数
handle_error() {
local filename=$1
local error_message=$2
echo -e "${RED}Error downloading: $filename${NC}"
echo "$(date +%Y-%m-%d_%H:%M:%S) - Failed: $filename - $error_message" >> "$FAILED_LOG"
}
# 進捗表示関数
show_progress() {
local current=$1
local total=$2
local filename=$3
local success=$4
local failed=$5
local percentage=$(( (current * 100) / total ))
local timestamp=$(date +%H:%M:%S)
printf "\r[%s] Progress: %d/%d (%d%%) | Success: %d | Failed: %d | Current: %s" \
"$timestamp" "$current" "$total" "$percentage" "$success" "$failed" "$filename"
}
# 合計ファイル数を計算
total_files=$(wc -l < filelist.txt)
current_file=0
successful_downloads=0
failed_downloads=0
echo -e "${YELLOW}Starting download of $total_files files${NC}"
echo -e "${YELLOW}Downloading from: s3://$BUCKET/$PREFIX${NC}"
echo -e "${YELLOW}Files will be saved in: $DOWNLOAD_DIR${NC}"
echo "----------------------------------------"
# メインのダウンロードループ
while IFS= read -r filename; do
current_file=$((current_file + 1))
# ダウンロードの実行
if aws s3 cp "s3://$BUCKET/$PREFIX$filename" "$DOWNLOAD_DIR/$filename" --quiet; then
successful_downloads=$((successful_downloads + 1))
echo "$(date +%Y-%m-%d_%H:%M:%S) - Success: $filename" >> "$LOG_FILE"
else
failed_downloads=$((failed_downloads + 1))
handle_error "$filename" "AWS S3 CP command failed"
fi
# 進捗表示
show_progress "$current_file" "$total_files" "$filename" "$successful_downloads" "$failed_downloads"
done < filelist.txt
# サマリーの作成と表示
echo -e "\n\n----------------------------------------"
echo -e "${GREEN}Download Summary:${NC}" | tee -a "$SUMMARY_LOG"
echo "Download completed at: $(date)" | tee -a "$SUMMARY_LOG"
echo "Total files processed: $total_files" | tee -a "$SUMMARY_LOG"
echo "Successfully downloaded: $successful_downloads" | tee -a "$SUMMARY_LOG"
echo "Failed downloads: $failed_downloads" | tee -a "$SUMMARY_LOG"
echo "----------------------------------------" | tee -a "$SUMMARY_LOG"
echo "Logs saved in:" | tee -a "$SUMMARY_LOG"
echo " - Full log: $LOG_FILE" | tee -a "$SUMMARY_LOG"
echo " - Failed downloads: $FAILED_LOG" | tee -a "$SUMMARY_LOG"
echo " - Summary: $SUMMARY_LOG" | tee -a "$SUMMARY_LOG"
# 失敗したダウンロードがある場合の通知
if [ $failed_downloads -gt 0 ]; then
echo -e "${RED}\nWarning: Some downloads failed. Check $FAILED_LOG for details.${NC}"
echo "To retry failed downloads, you can use the failed_downloads log file."
fi
# 最終ステータスの表示
if [ $successful_downloads -eq $total_files ]; then
echo -e "${GREEN}\nAll downloads completed successfully!${NC}"
else
echo -e "${YELLOW}\nDownloads completed with some failures.${NC}"
fi
\ No newline at end of file
2ZMCuD9VqlvfTZIKICe4MbtRGq9JbNVqLRssAOh9.jpg
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment