ファイルのローテーションについて

By wz0k

0. 概要 ログやDBのバックアップをタイムスタンプをつけてローテーションをしたいことがあると思います。今回はその際に使うスクリプトの実例を含めて解説していきたいと思います。 1. 想定環境 今回は「DBのダンプデータを毎日取得して、過去1週間分を保存しておきたい」という要望を想定します。またサーバーはubuntu18.04を想定しています。 2. コード紹介 では早速実例を出して紹介していきたいと思います。 ・6行目dateコマンドは後ろに表示形式を指定することで、任意の形で日付を出力できます。(unixタイムなども可能です)今回はわかりやすくyyyymmddの形を設定しています。 ・7行目dateコマンドはオプション-dを付与することによって、日付を現時刻から任意の数ずらすこともできるので、今回は”7 day ago”と指定することで7日前の日付を取得しています。 ・9行目ここで、今日付のディレクトリを作成します。 ・10行目ここには実際にやりたいことを記載します。今回はmongoDBのバックアップを取得し、先程作成した本日の日付のディレクトリに格納しています。 ・13行目7行目で取得した日付のディレクトリが存在した場合、そのディレクトリごと削除するようになっています。 3. cronに仕込む 上記のスクリプトを/home/ubuntu/db_backup/dairy_backup.shと保存したとすると、そのスクリプトを定期的に実行するcronを登録する必要があります。 上記の場合は毎日、午前0時10分にスクリプトが実行されます。…