• ベストアンサー
  • 困ってます

常時書き込みされているファイルをtarでバックアップしたい

  • 質問No.1269000
  • 閲覧数1246
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 83% (5/6)

Solaris9で/var配下を定期的にバックアップしたいと考え、
cronにて以下のようなコマンドを含むスクリプトを実行しています。

/usr/bin/tar cEfiX /backup/var_backup_`date '+%w'`.tar ${EXFILE} -C / ./var

しかし、/var配下に常時書き込みされているログファイルがあり、
tarがreturncode=1で終了してしまいます。
その際のエラー出力は以下で、
tar: ./var/hogehoge.log: file changed size
tarファイルに加える前と後で./var/hogehoge.logのファイルサイズが違っている
という内容だと認識しています。
※このファイルはバックアップの必要があるファイルでexcludeリストに加えるわけにもいきません。

tarコマンドの後に
if [ $? != 0 ]
という条件式を置いてエラーを検知しています。

何とかこのエラーだけを無視する妙案はありませんでしょうか?

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 42% (50/117)

こんにちは。

ちょっと筋違いになってしまいますが・・

/var配下をいったん別のエリアにCOPYするとかじゃだめでしょうか。
あるいは、エラーになるファイルが特定されているのでしたらそのファイルだけCOPYして、
COPYしたファイルをtarの対象にするとか。
お礼コメント
Xiangji

お礼率 83% (5/6)

ご回答ありがとうございます。
実際にファイルのバックアップは取れていて、ReturnCodeでエラーになるため、ReturnCodeを何とかすることばかり考えていました。
確かにtarの前にコピーしてコピー元はexcludeに入れておけばバックアップも取れてReturnCodeも0になりそうですね。
ちなみにcpはtarのようにコピー前と後でそれぞれファイル比較とかしませんよね?
試している限りはエラーにはなっていませんが・・・
投稿日時:2005/03/14 19:09

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 19% (214/1115)

全く別なアプローチですが Solaris9 では Volume Manager( 旧名Disk Suite )がパッケージされているので、RAID 1(ミラー)を構成しコピーが必要になった時にミラーを切り離してアクセスがない静的なファイルをコピーするという方法もあります。 コピー終了後は、切り離したミラーを接続すると自動的にオフラインの間の差分は展開されるのでユーザーの負担はありません。
お礼コメント
Xiangji

お礼率 83% (5/6)

ご回答ありがとうございます。
悪い意味ではなく面白い発想ですね。
ただ、残念ながらディスクは2本構成で
すでにSVMのRAID1でまるまるで使ってしまっているため
この方法は使えそうにありません。
投稿日時:2005/03/16 23:15
  • 回答No.1

ベストアンサー率 42% (45/107)

#全く見当違いな回答でしたら済みません。スルーしてください。

プロセスがずっと捕まえているファイルをバックアップする時は、
私は newsyslog(Linuxではlogrotate) を使っています。
お礼コメント
Xiangji

お礼率 83% (5/6)

ご回答ありがとうございます。
残念ながら「プロセスが掴んでいる」わけではなく、
「細かいデータが頻繁に書き込まれている」という感じです。

ちなみに、newsyslogでバックアップというのがピンとこないのですが、どのようなことをされているのでしょうか?話が脱線してしまいますがよろしければ教えてください。
投稿日時:2005/03/14 17:57
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ