- - PR -
バックアップの日付別管理
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-16 16:12
Linux上で、サーバのバックアップをしています。
バックアップ対象はファイル実体とデータベータクラスタです。シェルスクリプトを実行し、決めたディレクトリにバックアップを取ることはできました。次にそれらのデータを、日付ごとにディレクトリを用意し、日付ごとのバックアップを取っていきたいのですが、まずファイル名をその日の日付けにする時点でつまずいています。 pg_dumpall > /tmp/backup/backup.'date +%Y%m%d' で 'date +%Y%m%d' の部分が20061016 のようになるはずですよね、でもそのまま 'date +%Y%m%d' の形で保存されるのはなぜでしょうか・・? また、シェルスクリプトの中で自動的に今日のディレクトリを作成しその中に今日の分のバックアップを取りたい場合、 やはり for文で変数や引数を使うことになるのでしょうか。? よろしくお願い致します。 | ||||||||
|
投稿日時: 2006-10-16 16:46
『'』(シングルクォート)ではダメなので『`』(逆クォート)にすればOKでしょう。
| ||||||||
|
投稿日時: 2006-10-16 16:53
そのコマンドの結果、「backup.date +%Y%m%d」と言う名前のファイルが正しい動作かと思います。 ファイル名に日付を入れるのであれば、 pg_dumpall > /tmp/backup/backup.`date +%Y%m%d` となるかと思います。 「" "」「' '」「` `」の3種類あるので使用する状況に分けて使う必要があります。
その”今日”という日に1回しかバックアップを取らないのであれば、 mkdirをだらだらと書いても良いですし、 複数回であれば ・if文でディレクトリがあるか判断して、何もしない or 作成するの動作をさせる。 ・エラーが出ようとも/dev/nullに捨てて強行する。 などあるかと思います。 | ||||||||
|
投稿日時: 2006-10-16 17:23
せっきーさん tryさん
なるほど、逆クオートが正しいのですね。ありがとうございます!! 引用----------------------------------------------------------- その”今日”という日に1回しかバックアップを取らないのであれば、 mkdirをだらだらと書いても良いですし、 複数回であれば ・if文でディレクトリがあるか判断して、何もしない or 作成するの動作をさせる。 ・エラーが出ようとも/dev/nullに捨てて強行する。 などあるかと思います。 --------------------------------------------------------------- エラーに関しては後でログ管理の設定をし、またcronで自動化する予定です。今の段階では、 mkdir または if文で試してみたいと思います。 | ||||||||
|
投稿日時: 2006-10-16 18:34
シェルスクリプトの中で mkdirをしシェルスクリプトを実行したところ、それはできません、そのディレクトリは不明です というようなエラーが出たのですが、シェルスクリプトの書き方が悪いのでしょうか。
cd /tmp/backup #ディレクトリを作る場所に移り、 mkdir backup.`date +%Y%m%d` #mkdirを実行、そこをバックアップ先にしたのですが。 ここで変数や引数が必要になってくるのでしょうか。? | ||||||||
|
投稿日時: 2006-10-16 18:50
内容については他の方にお任せしますが(汗
エラーを書くときは、基本的に「そのまま」を書くといいです。意訳すると原文を推測する作業が発生します。 (追記) まさかとは思いますが「cd /tmp/backup」は実行できているんですよね? [ メッセージ編集済み 編集者: shimix 編集日時 2006-10-16 18:53 ] | ||||||||
|
投稿日時: 2006-10-16 18:58
eval を使ってみてください(未検証です)
書き方がわるいからエラーになります この程度ならコマンドを自分で入力して事前にエラーになることが確認できます FedoraCore3で確認しました bash eval は不要でした mkdirのコマンドのみ実行すると 文字列.日付 でディレクトリが作成されましたよ [ メッセージ編集済み 編集者: 99ri 編集日時 2006-10-16 21:42 ] | ||||||||
|
投稿日時: 2006-10-17 15:10
いろいろ自分で試していて、できました! ごめんなさい、投稿の中ではmkdirができないと書きましたが、よくみたら意味が違いました・・ ------------------------------------------------------------------- bash: line 1: /tmp/backup/DATE.20061017/dump.20061017: 許可がありません -------------------------------------------------------------------- というメッセージから、シェルスクリプトの中でpostgresユーザに su していたため、新しく作ったディレクトリへのアクセス権がpostgresユーザになく、このようなエラーになったのだと推測しました。下記のようにシェルスクリプトを書き加えたらできました。 ------------------------------------------------------------------ cd /tmp/backup mkdir Day`date +%Y%m%d` ls chmod 777 Day`date +%Y%m%d` 以下省略 ------------------------------------------------------------------ ※chmod をするためには、ls も入れないと、エラーがでることも分かりました。 今後も投稿は続くと思いますので、今後ともよろしくお願い致します!☆ |
1