ファイルサイズの縮小

ファイルサイズの縮小

各パーティションサイズが3 GBを超える2つのファイルがあるため、/var/logファイルを削除または移動せずに空き容量を確保する必要があります。これによりシステムがクラッシュする可能性があります。

また、何千もの行を削除することはできませんvi + dd

役に立つアイデアはありますか?

文書:

1-messages

2-私のWebサーバーのログファイル。

答え1

以下を使用するのとは異なり、rmファイルがまだ開いていても、ファイルを切り取ってディスク領域を解放できます。

> /var/log/big1.log
> /var/log/big2.log

しかし、まず別のシステムでテストしてみてください。ファイルのinode番号が変更されていることを確認してください。そうでなければ大丈夫です。

答え2

既存のファイルの内容全体を保存するには、そのファイルを別の一時スペースに圧縮し、圧縮されていない各ファイルを圧縮ファイルに置き換える必要があります。そうでない場合は、古いログファイルを削除するか、別の場所に保存してください。

以下は、コンテンツを失うことなくログファイルを圧縮するための提案です。ただし、ログファイルを増やすには、ファイルシステムがいっぱいになる問題を永久に解決するのではなく、遅らせるだけであることに注意してください。

圧縮する古いファイルを識別します。 (該当中は使用または開けません。録音用。 )私の例ではこれですbig1.log

圧縮されていない最大のファイルを保存できるファイルシステムブロックを決定します。私の例では、これがだと仮定します/home

実際のシナリオでは、ループを使用してfor一連のファイルを繰り返します。単一ファイルの手順は次のとおりです。

logfile='/var/log/big1.log'                      # The logfile to be compressed

if gzip -c "$logfile" >/home/log.gz
then
    touch --reference "$logfile" /home/log.gz    # Capture timestamp of last update
    chown --reference "$logfile" /home/log.gz    # Capture ownerships
    chmod --reference "$logfile" /home/log.gz    # Capture permissions
    rm -f "$logfile"                             # Make space
    mv -f /home/log.gz "$logfile.gz"             # Rename with correct suffix
fi

関連情報