2012-03-06 3 views
0

まず、シェルスクリプトに関しては完全に失われているので、これにはかなり簡単な解決が期待されます。私はちょうどそれを見つける場所を知らない。リモートディスク上にスクリプトの回転バックアップを作成する

状況は次のとおりです。私たちはバックアップを取るアプリケーションを実行しています(duh!)。アプリケーションには独自のバックアップスクリプトが付属しています。実行すると、現在の日付と時刻の名前のフォルダが作成されます。これらの中にデータベースダンプといくつかの設定ファイルがあります:

# cd backup 
# ll 
drwxr-xr-x 2 root root 4096 Mar 6 02:30 2012-03-06_02-15 
# ll 2012-03-06_02-15 
-rw-r--r-- 1 root root 26706579 Mar 6 02:16 Application.tar.gz 
-rw-r--r-- 1 root root  26060 Mar 6 02:15 Config.tar.gz 
-rw-r--r-- 1 root root 5503574530 Mar 6 02:21 DatabaseBackup.sql.gz 

バックアップフォルダはネットワークドライブにrsyncされます。

このスクリプトでは、バックアップする日数を指定することもできます。それは素晴らしいです。しかし今、我々は運用サーバー上のディスクスペースに関心を持ち始めています。

データベースをダンプしてconfigsを圧縮するスクリプトfunctionallityの複製は問題ではありません。

ここで私は迷子になります:私は理想的には本番サーバーに最新のバックアップを保持し、ネットワークドライブにXバックアップを保持したいと思います。

私はこのbashを使用して、あまりにも難しいことではありません考えてい

答えて

0

以下のディレクトリに、最新のアイテム以外のすべてを削除します(または多分期待?):

ls -lrt | grep -v total | awk '{print $9}' | head -n -1 | xargs rm 

あなたの場合残りのX個の項目を変更する必要がありますhead -n -1head -n -X

+0

基本的に私は次のコマンドチェーンを使用できます。1 dump databaseとcompress database。最新のダンプをバックアップドライブにコピーします。 3ローカルドライブで-n -1を指定してコマンドを実行します。 4リモートドライブで-n -5コマンドを実行します。したがって最新のコピーをローカルに、そして最新のものをリモートに残しておきますか? – danneth

+0

この方法の利点は、スクリプトが何回実行されても、常に最新のX個のファイルが存在しないことです。 –

2

パイプの代わりにfindコマンドを使用します。

次のようなものがあります:プロダクションサーバではfind /path/to/backups -mtime +1 -exec rm {} \;、バックアップサーバでは-mtimeが高いものと同じコマンドです。 IBMはdeveloperWorksのサイトでさらに読むためにgreat resource for using findを持っています。

関連する問題