0

特定のディレクトリに 1 時間ごとに mysqldump バックアップを作成する bash スクリプトがあります。

バックアップ ファイルのファイル名には、次のスキーマに従って日付と時間が含まれます。

backupfile_<day>-<month>-<year>_<hour>.sql.gz

ここで明確にするために、ファイル名の例をいくつか示します。

backupfile_30-05-2012_0800.sql.gz
backupfile_01-06-2012_0100.sql.gz
backupfile_05-06-2012_1500.sql.gz

ディレクトリ内のすべてのファイルをループしてからファイルを削除するスクリプトの作成を誰かが手伝ってくれますか?

  1. 1 日より古いバックアップを 1 時間おきに保持する
  2. 1 週間以上前の 1 日 2 回のバックアップを保持する
  3. 1 か月以上前の 1 日 1 回のバックアップを保持します。

スクリプトの次の始まりがあります。

#!/bin/bash
cd /backup_dir

for file in *
do
    # do the magic to find out if this files time is up (i.e. needs to be deleted)
    # delete the file
done
4

2 に答える 2

1

logroateスケジュールされたバックアップを取るためのこのような凝ったスクリプトをたくさん見てきましたが、現在利用可能なほとんどの *nix ディストリビューションで利用可能なユーティリティを利用しない理由を疑問に思います:

compress
     Old versions of log files are compressed with gzip by default.

dateext
     Archive old versions of log files adding a daily extension like YYYYMMDD instead
     of simply adding a number.

olddir directory
     Logs are moved into directory for rotation. The directory must be on the same
     physical device as the log file being rotated, and is assumed to be relative to
     the directory holding the log file unless an absolute path name is specified.
     When  this  option is used all old versions of the log end up in directory. This
     option may be overriden by the noolddir option.

notifempty
      Do not rotate the log if it is empty (this overrides the ifempty option).

postrotate/endscript
      The lines between postrotate and endscript (both of which must appear on lines by
      themselves)  are  executed  after the  log file is rotated. These directives may
      only appear inside of a log file definition.  See prerotate as well.
于 2012-06-06T13:10:53.680 に答える