今思ったらHLTVとか撮らないのであった。後は任せた。
Linuxのシェルスクリプトのお勉強がてらに、
デモファイルを圧縮してどこかに移動させるものを作った。
動作チェックなんてしてない。多分動く。
後はこれをcronで定時実行させれば、多少HLTV管理がラクになるんじゃないかなー。
そういえば、cron実行するときにユーザーの権限を指定できるのかな。
シェルスクリプトは計算ができないけど文字列操作はかなり手軽にできていい感じ。
#!/bin/sh ########## 設定 ########## # ターゲットになるパス TARGET_DIR="/home/hlds/hlds/cstrike/demo" # 対象ファイル TARGET_FILE="*.dem" # 出力先 OUTPUT_DIR="/home/hlds/hlds/cstrike/demos" # 対象ファイルサイズの下限と上限 SIZE_MIN=`expr 1024 \* 1024 \* 5`; # 5MBから SIZE_MAX=`expr 1024 \* 1024 \* 100`; # 100MBまで # フラグ DELETE_ITEM=1 # 圧縮したものは削除する。 ########## 処理 ########## # エラーはNULLへ出力 mkdir $OUTPUT_DIR 2> /dev/null # 対象ファイルを探す for file in `ls ${TARGET_DIR}/${TARGET_FILE} 2> /dev/null` ; do # ファイルサイズ取得 SIZE=`wc -c $file | awk '{print $1}'` # ファイルサイズが SIZE_MIN < SIZE < SIZE_MAX if [ $SIZE -gt $SIZE_MIN ] && [ $SIZE -lt $SIZE_MAX ] ; then FILENAME=${file##*/} # パスから抜き出したファイル名 FILENAME_NOEXT=${FILENAME%.*} # 拡張子なしファイル名 MAP=${FILENAME_NOEXT##*-} # マップ名 DATE=${FILENAME_NOEXT#*-}; DATE=${DATE%-*} # 日付 YYMMDDHHMM YEAR=`expr ${DATE:0:2} + 2000` # 年 YYYY MONTH=${DATE:2:2} # 月 MM DAY=${DATE:4:2} # 日 DD HOUR=${DATE:6:2} # 時 HH MIN=${DATE:8:2} # 分 MM # echo "${file} : ${SIZE} : $FILENAME : $DATE : $YEAR : $MONTH : $MAP"; #debug # 出力する書式 OUTPUT="${OUTPUT_DIR}/${YEAR}/${YEAR}-${MONTH}-${DAY}_${HOUR}${MIN}_${MAP}.zip" # エラーはNULLへ出力 mkdir ${OUTPUT_DIR}/${YEAR} 2> /dev/null # 圧縮成功 かつ 削除フラグ なら 元ファイル削除 zip -9 $OUTPUT $file && [ $DELETE_ITEM != 0 ] && rm -f $file; fi done