サブフォルダーとセッションログを含むフォルダーがあります。ファイルを使用せずにこのフォルダを圧縮して削除するには、いくつかのコマンドまたはスクリプトが必要です。この構造を持っていますが、これがファイルを処理する必要があるかどうかはわかりません。
tar -zcvf /srv/log/prod/dms/espis/documentum/log/00029392-$(date +%F).tar /srv/log/prod/dms/espis/documentum/log/0002939
cd /srv/log/prod/dms/espis/documentum/log/00029396
rm -R *
どんなアイデアがありますか?
答え1
すべてのファイルは実際にrm -R
削除されます(十分な権限が付与されている場合)。現在開いているファイルのみを保持するには、次のように確認できます。現在開いているlsof +D /srv/log/prod/dms/
すべてのファイルが一覧表示されます。/srv/log/prod/dms/
注意してください。スクリプトを作成するには、デーモンがファイルハンドラを開いたままにしておく必要があります(つまり、書き込みが必要な場合にのみファイルハンドラを開く必要があることを意味します...)。
したがって、あなたの後にtar
次のスクリプトを書くことができます。
for f in $( find /srv/log/prod/dms/espis/documentum/log -type f -print ) ; do
lsof +D /srv/log/prod/dms/espis/documentum/log | grep -w $f\$ >/dev/null
if [ $? -eq 1 ] ; then
echo "Delete $f"
else
echo "Keep $f"
fi
done
編集する:もちろん、デーモンがログローテーションを実行している場合は、次の古いログファイルを削除する方が簡単です。N日と同様のものfind /srv/log/prod/dms/espis/documentum/log -type f -mtime +99 -exec rm -f {} \;
(ここでは-mtime +99
「99日以降は変更されません」を意味します)