Linuxで不要ファイルを自動削除するシェル

Linuxサーバーを運用すると、どんどん溜まる
不要ファイルを自動削除するシェル、
すぐに作れますか?


簡単そうですが、意外と難しいですよ。

Linuxサーバーを運用すると当然ですが、
ログやデータなどの不要ファイルが溜まります。
この不要ファイルを自動削除するシェルはどうすればいいのか?

Linux運用者は、絶対に読み進めてください。



Disk Fullのエラーだけは回避しよう
Linuxシステム運用で一番怖いエラーは、
ハードディスクが一杯
になってしまう「Disk Full」エラーですね。
このエラーが発生するとシステムは確実にダウンします。


いやいや、それどころか下手するとログインも出来なくなります。

何故なら、通常ログインなどのプロセスが発生する時、
ハードディスク内には一時ファイルが作られるのですが、
この一時ファイルが出来ないほどハードディスクの空きがなくなってしまえば、
当然の帰結としてシステムが起動不能になります。まさに「The End」。


これは悲惨ですよ。

手も足もでません(涙)。


不要ファイルはどんどん増える
そんな悲惨のことがあると言いつつも、
Linuxサーバーを運用する限り不要ファイルは増えてしまいます。
だって、サーバーだって生きているんだから(笑)。人間と同じです。


例えば私の運用しているサーバーでは、別のサーバーから
日次処理に必要なデータファイル10M(メガ)が毎日送られてきます。


↓のような感じで。

 20150731.data 10M(メガ)
 20150801.data 10M(メガ)
 20150802.data 10M(メガ)
 ・・・・・・・・・


どんどん毎日溜まって・・・・
10日で100M(メガ)、100日で1G(ギガ)
になると。


じゃあ、
どういう要件で自動削除すればいいのか?

そんな溜まってしまった不要ファイルを毎日削除しなければならないのですが、
もちろん手作業ではやってられませんよね。ってか、システム屋として論外だし。
そこで、

自動削除するシェルはどうすればいいのか?

という本題になるわけです。どうでしょうか?これ、すぐに出来そうですか?
簡単そうな感じもしますが、なめてはいけません。

だって本当の運用で使うんだったら、
正常系・異常系を考えれば、↓こんな要件が必要になりますからね。

 <自動削除の要件>


指定したディレクトリの指定したファイルだけ自動削除できる。

・指定した時間が経過したファイルだけ自動削除できる。


・上記指定方法は、別途パラメータファイルで容易に設定できる。

・ディレクトリやファイルは何個でも指定できる。

・エラーが発生した場合は、ログが残る。

何のファイルを削除したか、というログも残る。



シェルをご提供します
いかがでしょうか。上記のような要件で本気で作るとなると、
1日や2日どころか、テストまで含めたら1週間くらいかかりますよね。
しかもLinuxを関わる限り、いつかどこかで
必ず必要になります。

そこで、もしよかったら
私が作成したシェルをご提供します。

もちろん「そのくらいのシェル、自分で書ける」という場合は必要ありませんが、
Linuxを運用する場合やシェルの一般用法を学びたいなら、
是非、お取り寄せしてくださいね。


提供物の中身
で、その提供物(シェル)の中身ですが、以下の4ファイルになります。

・シェル本体
・共通関数(ログ出力、処理チェック、エラーログ出力)
・設定ファイル
・使い方説明書(PDF)


まあ、この4ファイルのうち、上の3つのファイルは「シェルの基本構成」なわけで、
初心者には是非覚えて欲しいのですが、
もう少し具体的に言うと、↓のような感じになります。

<シェル本体>

共通関数、設定ファイルを読み込みます。

設定ファイルに記述された「指定ディレクトリ、指定ファイル形式、指定経過時間」に従って、
ファイルの削除処理を繰り返します。

その際に、共通関数を使って、削除件数、削除リストをログ出力します。
また、指定ディレクトリが存在しない場合、指定ディレクトリが読み取り不可の場合、
対象ファイルが削除不可の場合には、エラーログが残ります。

<共通関数>

以下の3つが共通関数になっています。
・ログ出力関数
 日付が入ったログファイルを自動生成し、任意のメッセージをログとして出力します。
 日付が入ったログファイルとは、例えば↓のようなファイルのことです。
 20071108.log

・処理チェック関数
 指定ディレクトリが存在しない場合、指定ディレクトリが読み取り不可の場合、対象ファイルが削除不可の場合などの実行をチェックする共通関数です。

ちなみに、この関数を知っておくだけでも、相当の勉強になると思います。

・エラーログ出力関数
 処理チェック関数でエラーが発生した場合は、エラーログが残ります。

<設定ファイル>

ログ出力先、エラーログ出力先、ディレクトリ、ファイル形式、経過時間を指定します。
設定ファイルの詳細サンプルを↓に記載しましたので、ご覧ください。

ちなみに、設定ファイルの中身は、↓のような感じになります。

<設定ファイルの中身>

#ログファイル出力先ディレクトリ
log_dir="/home/sato/log"

#エラーログファイル
ERROR_LOG_FILE="/home/sato/error.log"

#dir:削除対象のディレクトリを指定します。
#day:削除対象の日数を指定します。この日数以前に作成されたファイルを削除します。
#type:削除したいファイルのタイプです。例:*.xmlは、拡張子xmlを削除対象とします。
#配列[]の数字を増やすことで、削除対象を増やすことができます。

#↓の場合、/home/satoディレクトリで、3日以上経過して、拡張子xmlファイルを削除します。
dir[0]="/home/sato/"
day[0]="3"
type[0]="*.xml"

#↓の場合、/home/sato/logディレクトリで、90日以上経過して、拡張子logファイルを削除します。
dir[1]="/home/sato/log"
day[1]="90"
type[1]="*.log"

#↓の場合、/home/file/dataディレクトリで、7日以上経過して、拡張子dataファイルを削除します。
dir[2]="/home/sato/file/data"
day[2]="7"
type[2]="*.data"

#↓の場合、/home/file/dataディレクトリで、7日以上経過して、先頭abcのファイルを削除します。
dir[3]="/home/sato/file/data"
day[3]="7"
type[3]="abc*"


使い方説明書の目次
また、使い方説明書の目次は以下になります。




内容の保証
以上のような内容になります。
私は、アナタにとって役に立つと思います。

しかし、最終的に

役に立つかどうかを決めるのは、アナタです。

(もし、アナタの役に立たないのに、代金をいただくのは、私の本意ではありません。)

このレポートは、
6ヶ月の完全返金保証を行います。


返金要求方法は簡単です。アナタが
気にいらない場合は、申込されるとメールが届きますので、
そのまま返金要求してください。
謹んで返金させていただきます。




では、お値段です。
Linuxで不要ファイルを自動削除するシェル
4,000円です。

※会社の上司に納期1週間と言われても、こっそり3時間で完了できます(苦笑)。



お申し込みはこちらです。
<カード決済>か<銀行振込>どちらかでお申込みください。
<カード決済>今すぐレポートをダウンロードできます。

<初めての場合>

姓(必須)
メールアドレス(必須)
決済パスワード※
利用規約に同意(必須)
都道府県
(何かあれば)
メッセージ等
※決済パスワードを入れておくと、次回から、
本サイトでのカード番号入力を省略できます

<パスワードをお持ちの場合>

メールアドレス(必須)
決済パスワード(必須)
利用規約に同意(必須)
(何かあれば)
メッセージ等


<銀行振込>入金後(48h以内に)レポートを送ります。
銀行振込み口座は下記に登録したメールアドレスにお送りします。お申込み後、5日以内にお振込みください。
姓(必須)
メールアドレス(必須)
利用規約に同意(必須)
都道府県
(何かあれば)
メッセージ等

追伸

シェルの基本構成を学ぶ

シェル作るのって最初は簡単なんですよね。
だって、基本的にコマンドを並べるだけだから(笑)。

まあお遊び程度なら、もちろんそんなベタなシェルでもOKなのですが、
きちんとお客様に納品できるシェルは、そうはいきませんよね。

異常系の処理はどうするのか?
共通関数は外部ファイルになっているのか?
運用を楽にするため、設定ファイルを変更するだけになっているのか?
とかとか。

そういう所、突っ込まれますよ(笑)。
いや当然、
突っ込まれる前に自分でなんとかしなくちゃいけないわけで、
そのために、今回のご提供となっています。

是非プロとしての一歩を踏み出しましょう。
がんばってくださいね。

では、では。

またお会いしましょう。
ありがとうございました。

サーチマン佐藤




特定商取引法の表示