特定のディレクトリのTarファイルのスクリプト

特定のディレクトリのTarファイルのスクリプト

私は特定のディレクトリに移動し、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?専用ソフトウェアを使用できますが、なぜ車輪を再構築するのですか?

おすすめ記事