ログファイルをアーカイブするための Bash スクリプトを作成しました。
#!/bin/bash
# Pour chaque dossiers "log" trouvé.
for folder in $(find . -name log -type d )
do :
# Pour chaque dossier log contenant des fichiers ".log" vieux de +30jours.
for file in $(find $folder -name "*.log" -mtime +30)
do :
# Archiver les fichiers ".log".
tar czf archive-log.tar.gz $folder/*.log
done
# Si une archive existe.
if [ -e $folder/*.tar.gz ]
# Déplacer l'archive.
then mv $folder/*.tar.gz $ARCHIVE
fi
done
私が経験する出力は次のとおりです。
[logs]$ ll
total 8
drwxr-xr-x 2 webadm webgrp 4096 sep 17 14:26 log_weblogic
-rwxr--r-- 1 webadm webgrp 456 sep 17 14:31 scriptArchivesLog
[log_weblogic]$ ll
total 200
-rw-r----- 1 webadm webgrp 98005 mai 16 04:04 test.log
-rw-r----- 1 webadm webgrp 98005 sep 13 15:29 WLS-CONSOLE-DOMAINE-PUB.log
[logs]$ ll
total 32
-rw-r--r-- 1 webadm webgrp 21734 sep 17 14:31 archive-log.tar.gz
drwxr-xr-x 2 webadm webgrp 4096 sep 17 14:26 log_weblogic
-rwxr--r-- 1 webadm webgrp 456 sep 17 14:31 scriptArchivesLog
スクリプトを実行すると、すべてのファイルがアーカイブにあるのはなぜですか? 一致するファイルだけが欲しいmtime +30
[logs]$ tar tvzf archive-log.tar.gz
-rw-r----- webadm/webgrp 98005 2013-05-16 04:04:00 ./log_weblogic/test.log
-rw-r----- webadm/webgrp 98005 2013-09-13 15:29:03 ./log_weblogic/WLS-CONSOLE-DOMAINE-PUB.log