- ベストアンサー
バックアップスクリプトの作り方
Linuxシステムに数値計算結果を格納するデータサーバーがあります。 これのバックアップをする仕組みを作りたいのでアドバイス頂けないでしょうか? やりたい内容を以下に記述します。 ■概要 /data/simulation → /data/backup に必要なデータのみコピー ■詳細 /data/simulationは約5TBあります。 内部に100単位の子ディレクトリ、孫ディレクトリもあります。 データが大きすぎて、計算結果本体はバックアップしづらいので 計算結果を再現できるようなデータ(計算条件などの)のみをバックアップしたいです。 ※計算条件だけであれば、5TB中100GB程度で済みます。 処理フローのイメージとしては、 1) バックアップ除外ファイルをリスト化 2) 除外ファイルを除き、ディレクトリ構造を含めて /data/simulationから/data/backupにコピーする ※差分コピーができればベターですが、全上書きコピーでもかまいません。 になります。 素人考えでは、以下のようなシェルスクリプトでできるかなとも思うのですが いかがでしょうか? #!/bin/tcsh foreach dn( `find /data/simulation -type d -print` ) if ( ! -d $dn:s/simulation/backup/ ) mkdir -p $dn:s/simulation/backup/ foreach fn( `ls $dn:s/simulation/backup/*` ) --除外ファイル以外をコピー-- end end 除外ファイルを100種ほど定義しなくてはならないので、処理は遅そうですが、、、。 Windowsであれば、様々なツールで除外ファイルを決められるバックアップソフトで 差分バックアップができますが、このようなツールはLinuxにあるのでしょうか? 使用ディストリビューションはRedHat Enterprize Linux 4です。 X上で動くアプリでいいのがあれば、それで解決してしまうのかもしれません。 以上、助言よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
更新されたファイルだけをコピーしてくれて、パーミッションやオーナーも狂わない rsyncがいいのでは? リモートへのミラーリングでよく使われますが ローカルのディスクの同期にも使えます。 たとえば、 rsync -av --delete --exclude='*.temp' /data/simulation /data/backup 除外するファイルにパターン性がないなら、ファイル名一覧をファイル化して --exclude-from=FILE で指定できます。
その他の回答 (2)
- lowrider_2005
- ベストアンサー率40% (1520/3748)
ご要望にあうかどうかちょっと自信ありませんが、rsyncならexclude指定もできますし差分も取れます。
お礼
ご回答ありがとうございました。 もう一方からもrsyncを紹介して頂いて、これを調べてみることにしました。
- Tacosan
- ベストアンサー率23% (3656/15482)
除外ファイルの条件にもよるけど, tar とか cpio のパススルーモードでなんとかなるかもしれん.
補足
ご回答ありがとうございます。 cpio・・・ アーカイブファイルへのファイルのコピーや、アーカイブファイルからファイルへのコピーをおこなう まだ詳細を調べたわけではありませんが、 <あるデータ領域←→バックアップファイル> ができるんですかね。 コマンドの存在自体を初めて知りました。 他の方に助言いただいたrsyncコマンドの方が実現できそうなイメージがあるので、rsyncを試した後、ダメであれば、調べてみたいとおもいます。
補足
ご回答ありがとうございます。 パーミッションや所有者はこの際諦めていましたが、そこまで望めるならとても嬉しいです。 除外ファイルのパターンがワイルドカードとか使えると完璧にいけそうな予感してますが、これから調べてみます。 怪しいスクリプトも組まなくて済みそうなのでとても嬉しいです。 まずはありがとうございました。