ファイルの中身を空にしたい事ありますよね。
例えばログが大量に蓄積されていた時や、デバッグのためにリセットしたりなど。
しかしそんな頻繁に起きるわけでもなく、いざ使うとなっても「なんだっけ?」となり調べていたのでよく使うコマンドの備忘録です。
対象
Linux環境 (Mac/WSL/サーバー環境などを想定)
※Windowsユーザーさんはパワーシェルやコマンドプロンプトは対象外ですので注意してください。
結論、truncate -s 0 パス
を使う
truncate -s 0 ファイルパス
これは既存のファイルの中身を削除して容量を0にする。
注意点としては、ファイルが存在しない場合にはエラーになります。
特段理由がなければこれで問題なくクリアできるのでおすすめです。
-s
オプションがサイズを指定していて、0
でファイルサイズを0バイトに指定しています。
その他の方法
正直調べても色々出てくるので、どれが正解とは言えません。上のtruncate
を使う事で空にするという目的はきちんと果たせているので困ってはないが他にもやり方は色々あるようです。状況に応じて使い分けられると良いかもしれません。
echo "" > パス
これもファイルの中身を空にはしてくれるが、truncate
とは違い特徴がある。
仕組みとしては、初めに空文字列を出力して、> (リダイレクト演算子)
を使って右側のパスで指定したファイルに出力するというものみたいです。
注意点としては、 ファイルが存在しない場合にはファイルを作成する という事です。
なのでファイルの作成権限がない場合にはエラーがになるかもしれません。
余談1:WordPressのログ
以前WordPressの移管作業時にデータが20GBくらいあるサイトに遭遇。
サイト自体も大きい方ではあったので、バックアップデータとか画像なのか?と調べてみることに。
確かに案の定バックアップデータは大きく10GBくらいは削減できました。
それでも10GB、画像がそこまで多くないので調べてみるとログデータが肥大化していました。
たかがログだと侮っていましたが、それでも6GBもありました。
デバッグした後には余計なデバッグログを出力しないように無効化しましょう。
余談2: Laravelのログ
Laravelではstorage/logs/laravel.log
があると思います。
これはLaravel側で必要時には自動で生成されるらしく、rm
で消しちゃっても問題ないらしいです。