私は特定のディレクトリに移動し、2日より古いすべてのログファイルをtar.gzに移動するUnixスクリプトを作成しようとしています。これまでこれを持っていますが、うまくいきません。どんな助けでも大変感謝します。
#!/bin/bash
AGE_TO_COMPRESS="2419200" # 172800 seconds = 2 days
LOG_FILES="/myfile/logs"
for file in $LOG_FILES;
do
if [ $(( `date +%s`)) -gt ${AGE_TO_COMPRESS} ]
then
tar -cvzf $file.tar.gz $file;
fi
fi
done
ベストアンサー1
あなたのスクリプトで最も明白なエラーを修正しました。LOG_FILES
圧縮するファイルのリストが含まれていると思います。
#!/bin/bash
AGE_TO_COMPRESS=2419200 # 28 days
# list of file to compress
LOG_FILES="/tmp/test/test /tmp/test/test2 /tmp/test/test3 /tmp/test/test4"
# Any file older than EDGE_DATE must be compressed
NOW=$( date +%s )
EDGE_DATE=$(( NOW - AGE_TO_COMPRESS ))
for file in $LOG_FILES ; do
# check if file exists
if [ -e "$file" ] ; then
# compare "modified date" of file to EDGE_DATE
if [ $( stat -c %Y "$file" ) -lt ${EDGE_DATE} ] ; then
# create tar file of a single file
# this is an odd way to compress a file
tar -cvzf $file.tar.gz $file
# do we want to delete the old file?
# rm "$file"
fi
fi
done
とにかくfind
/bzip2
解決策が良いだろうという@dhagのコメントに同意します。
それを使用することを検討しましたかlogrotate
?専用ソフトウェアを使用できますが、なぜ車輪を再構築するのですか?