Back-upできないという問題について

Back-upできないという問題について

- Junichi Azuma の投稿
返信数: 22

こんにちは、東です。

外国語教育メディア学会で原島先生、そして秋山さんにご相談させていただいていました、「Back-upがうまくできない」という問題について、ほぼ解決しましたのでお知らせします。まず第一にですが、ご指摘のとおりInstall時に私がcronの設定について何もしていなかったということがそもそもの原因でした。

解決の手順

いくつかのDocumentにあるように、

  1. http://自分のMoodleサイト/moodleのディレクトリ/admin/cron.phpを手動で打ち込んで、反応するかどうかを見る。しばらく時間がかかるが、ここで次々と既設定なのにやってくれていなかったバックアップがなされていくのが確認できる。
  2. 私の場合Fedora Coreを使っているので、ターミナルのコマンドラインから crontab -e と入力。すると関連付けられたエディタが起動(vi)。中身は空白。もともとcrontabなるファイルがあって中が空っぽだったのか、それともここで初めてそのファイルが生成されるのか、素人なのでよくわからない。
  3. viはちょっと操作がややこしい。まずiを押してInsertモード(書き込めるモード)に切り替え、 */5 * * * * wget -q -O /dev/null http://さっきのサイト/xxx/cron.php と入力。その後ESCキーで編集モードを抜ける。
  4. ファイル操作モードになっているので、 :wq とここで入力することでセーブして終了。

というふうにしました。すると既設定のBack-upがあっても今まで実行されていなかったもので、直近のものが実行されるようです。その後帰宅してしまったので、それ以後のものはまだ確認していません。

なお、これもできないと言っていましたが、その後各コースごとのバックアップもできるようになりました。連動していたのですね。

コースバックアップとリストアの問題

前期で終了したある英語の授業のコースデータをバックアップしました。その後後期に開始される、別名でありつつも同じ内容の授業科目に、前期のコース内容をRestoreでコピーしようと試みました。その際に、Upload限界の2MBの壁が立ちはだかりました。Uploadが無理なら、Restoreする前期のコースバックアップのファイルをオンラインで選択できるのかと思いきや、別のコースのリソースなどはのぞけないようになっています(セキュリティの面から当たり前ですが...)。

その解決法は以下のとおりです。

  1. 新しいコースについて、空っぽだが、そのコースのバックアップを取る。そのバックアップファイルがコースのスペースのどこかに保存されることが当然確認できます。先にとにかくこの新コースにおいてバックアップファイルが保存されるスペースを確定しておかねばなりません。そして、バックアップファイルのファイル名をメモしておきます。
  2. サーバマシンのmoodledataディレクトリをGNOMEでもKDEの環境でもいいのでどんどん開き、旧コースのバックアップファイルが保存されたディレクトリを探す。そしてそのファイルをサーバマシンのデスクトップにでもコピーしておく。
  3. 同様に新コースのバックアップファイルが入ったディレクトリを片っ端から探す。
  4. 見つかったら、先ほどの旧コースのバックアップファイルをこの新コースのバックアップファイルが入ったディレクトリに移す。
  5. 別のクライアントマシンからでいいので、新コースからRestoreを試みます。後は指示どおりやればできます。ただ、新コースのコンテンツが旧コースのものでざっと埋め尽くされるのではなく、「旧コース名+copy」のような新しいコースが出来上がります。私の手順が悪かったのかもしれませんが... そこで、生成されたコースを今度は本当の新コースの名称に変更し、最初作った空っぽの新コースは削除しました。ひょっとすると旧コースにいるままでRestoreができたのかもしれません。ただ、そうすると不具合があると思い、仮に新コースを作っておいてそこからRestoreしようと試みました。

残る問題がまだあるのですが、長くなるので、こちらはこれに対するコメントでつけます。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

ふたたび東です。長くなって恐縮です。

残る問題

実は、Back-upのためのディレクトリはサーバマシンのHD中にあります。当然これでは本当のBack-upになりません。本来はUSB2タイプ外付けHDにしたいのですが、そこに書き込んでくれません。手動でcron.phpを動かしてもエラーとなりました。この外付けHDですが、/media/usbdisk というようになっています。これだとひょっとしてCD-ROMなどと同じように考えられていて、書き込みできないのでしょうか。GUI環境でではありますが、rootで入っているのにこのHD中のディレクトリのパーミッションの変更が一切できません。

このため現在の方針としては、とりあえず本体のHDでBack-upを取り、その後外付けHDにそれを手動でコピーするという方法を取ろうかと考えています。

何かいい解決法はあるでしょうか?

Junichi Azuma への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

自分で調べてみましたが、どうも「残る問題」の解決は無理のようです。

USB接続の外付けHDはもともとPermission概念がなく、rootしか書き込みできないようです。したがって自動的にここにバックアップさせるのは不可能のようですね。一週間に一度など手動でコピーしないとだめのようです。やれやれ...  東。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Ryoichi Nakayama の投稿

nakayamaです。

FCは使っていないのですが、vineで外付けネットワークディスク(Windows共用のsmbfs)にバックアップできてます。usbdiskをマウントするとき、uidとか指定してもだめでしょうか。

Ryoichi Nakayama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

中山先生;

アドバイスありがとうございました。まだLinuxはさわり始めたところなので、ちょっと勉強して試してみます...と書きたかったのですが、先日のBackup設定はやはりおかしいようです。状況は次のとおりです。

 
お盆休みで職員が一斉休暇ということで、数日大学に来ていなかったのですが、今日出勤して確認したら、やはりMoodleのバックアップおかしいです。あるいは何らかの私の勘違いかもしれませんが。

問題は、先日cronの設定をやったのですが、Backupで指定したディレクトリは空っぽなのです。ここでいうBackupはAdministration>Configurationの中のBackupのスケジュールを設定する部分のことです。ここで指定したディレクトリのことを指しています。先日は手動でcron.phpを動かしてみて、その後にここで再度Backupのスケジュールを同じディレクトリで設定しておきました。手動でcron.phpを実行した際には、指定したディレクトリにファイルがいくつか作られていました。その後それらをUSB接続のHDにコピーし、元のファイルは消さずに帰宅したのですが、今日現在では空っぽになっています。さらに手動で再度cron.phpを実行しても、バックアップファイルは作らないですね。エラーではなく、実行はしているようで、次回のバックアップはいついつという表示も出ます。

それで、今度はあるコースに入ってそこの中でのBackupをやってみました。するとこれはちゃんとzipファイルが作成されます。

それでますますわからなくなってきたのですが、最初のAdministrationから設定する部分のBackupと、各コースごとのBackupはどこが異なるのでしょうね。いいように解釈すると、どこかでBackupのスケジュールは働いていて、それのおかげで(というのもcron設定する前はコースのBackupもできていませんでした)コースごとのBackupはできているということなのかもしれません。

としても、Administration>Configuration中のBackupを指定したディレクトリは本当に空っぽでいいんでしょうかね。でも、中山先生は「vineで外付けネットワークディスク(Windows共用のsmbfs)にバックアップできてます」ということなので、定期的にちゃんとネットワークディスクにBackupファイルが作られているわけですよね。私の場合、やはり何か問題があるように思いますが。

東淳一

Junichi Azuma への返信

Re: Back-upできないという問題について

- Minoru Akiyama の投稿
秋山です。

2点気になることがあるのですが、、。
1)コースの「ファイル」の「backupdata」フォルダにコースバックアップが自動スケジュールで取れたということでしたら、自動スケジュールの設定画面のバックアップディレクトリの指定はしていないですね?
2)cron.phpの起動はどのようにされてますか?crintabにcron.phpを起動するための何らかの記述をしていますでしょうか?
Minoru Akiyama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

秋山様;

その節はお世話になりました。さて、2点のうち、1)ですが、コースの「backupdata」フォルダにバックアップファイルが取れたという件ですが、自動では取れていません。コースに入ってBackupを指定し、リアルタイムでBackupのzipファイルを生成してくれます。たしかにサーバの中を直接見ると「backupdata」フォルダ中にzipファイルが出来上がっていますが、これは一瞬前に手動で作成したものです(ファイル名に時刻が使われますからわかりますよね)。

関連して、自動スケジュールの設定では、Moodledataディレクトリの中に新規にBackup用のフォルダを作り、そこを指定しています。cronの設定をする前には、手動でcron.phpを起動すると、その場でそのディレクトリにBackupファイルを複数生成しました。

2)の点は、

*/5 * * * * wget -q -O /dev/null http://自分のサイト/cron.phpのあるディレクトリ/cron.php

となっています。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Minoru Akiyama の投稿
秋山です

/dev/nullを適当なディレクトリ、ファイル名にしてwgetのメッセージを読んで、正常にアクセスしているか調べてはどうでしょうか?
Junichi Azuma への返信

Re: Back-upできないという問題について

- Ryoichi Nakayama の投稿

nakayamaです。

私が勘違いしていました。コースのバックアップは自動的には取れないようです。
私が使っているのはサイトファイル(コースを含む)のバックアップでした。サイトでは不都合でしょうか。(他のコースも含まれますので)

smbfsで指定しているuid、gidはapaheのものです。vfatでも同様だとおもいます。これでサイトのバックアップは取れると。指定されている数のバックアップファイルが残りますので、ファイル数1と指定されていると、前回のバックアップは消えます。私は通常3世代保存しております。

Ryoichi Nakayama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

中山さま;

何度もありがとうございます。はい、私が現在問題をかかえているのは、サイトファイルの方だと思います。それで、先ほどPostingしたのですが、スケジュール設定を少し変えてみて月曜もスケジュールに加え、午後1710を指定し保存しましたところ、ちゃんとBackupファイルを生成してくれました。サイトファイルのBackup(と思うのですが)でも、1つのファイルではなく、明らかに各コースのBackupがそれぞれ別個に出来上がっています。それらプラス1個のファイルで合計コース数プラス1個のファイルです。コースのBackupにあたるファイルは、

backup-コース名-タイムスタンプ.zip

となっています。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Ryoichi Nakayama の投稿

東先生

ご指摘ありがとうございます。Moodle1.5.2で運用している(ホスティングサービス利用)の方を確認したら、確かに各コースのフォルダにそれぞれ出来てました。サイトのバックアップファイルの中にコースのバックアップが含まれなくなったようです。
1.4.2では、各コースのファイルフォルダには作成されず、サイトバックアップファイルにコースのバックアップが含まれていたのですが。バグかな。

Ryoichi Nakayama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

中山先生;

東です。はい、私のは1.4.2なのですが、まとめて指定したサイトBackupのディレクトリにBackupファイルが入っています。ただ、別に書きましたように、一応ファイルはコース別にzipファイルで生成されています。とにかく今のBackupスケジュールは次回のBackup予定時までさわらずにおきます。次回が水曜日の夕方なので、木曜日以後にこのディレクトリのファイルがどうなっているか確認してみます。USBへの自動Backup設定の勉強と挑戦はその後になりますね。でもまだ後期まで十分時間がありますから、できればUSBのHDへの自動Backupも完全にできるようにしたいものです。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Ryoichi Nakayama の投稿

nakayamaです

既存のbackupファイルが消えるというのが妙ですね。
cron.phpが動いて、前回のbackupを消しているのであれば、新しいbackupファイルの書き込み権がないというのも考えにくいので、他のプログラムなどなんらかのcleanupが動いていることはないですか。同じディレクトリにbackup以外のファイルを置いておくと、これも消えてしまうのでしょうか。

先の投稿で、1.5.xと1.4.xの動作が違うように書いてしまいましたが、設定が違ってますので、1.5だからというわけではありませんでした。
backup用のファイルが同一ディレクトリに出来たほうが都合がよいようにおもいます。私のホスティングサービス利用側の1.5もbackupディレクトリを指定しました。スクリプトを使ってディレクトリの内容全部をftpでdownloadしたほうが簡単でした。勉強になりました。

Ryoichi Nakayama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

中山先生;

東です。いいアイデアをお聞きしました。今から帰宅するのですが、不要なファイルをBackup用のディレクトリにコピーして帰ることにします。明日来てどうなっているか... ですね。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

中山先生;

東です。その後今日朝に研究室に来てからBackup用のディレクトリを見ました。やはり消えており、フォルダの中は空っぽです。ちなみにその時点で再度不要ファイルをどこかからかコピーして置いておきました。2時間ほどして思い出してのぞいてみると、やはり消去されています。

さきほどサイド不要なファイルをコピーしました。フォルダの中をしばらくじっと見ていましたが、5分ほどで消去されるようです。PHPプログラミングはしたこともありませんが、一度cron.phpを見てみます。消去に関して常識で考えてもわかるような命令が含まれていないかチェックしてみます。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Ryoichi Nakayama の投稿

nakayamaです

5分ほどで消える・・・ということはcron.phpの実行周期と合致しますね。
しかし、cron.php、それから起動されているbackupXXXX.phpでは、他のファイルまで消すコードが、私が見た限りではありませんね。不思議。
私はコンテンツがあまりない(他のリソースを参照している)のがほとんどでコースデータが大きくないのですが、backupファイルが大きいのが障害になるとか。。
手動だとbackupファイルが作成されるようなので、どれ位の大きさになっているか、そのときに要する時間だとか参考になるかもしれません。
backupプログラムのリエントラント性に何か問題があるのなら、cronの実行間隔をあけて(たとえば15分に1回)確かめるというのも。

Ryoichi Nakayama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

中山先生;

東です。今度はうまくいっているようです(ただ、念のため「うまくいっているかもしれません」程度にしておきます:笑)。

以下がやってみた内容です。

その後まずcronの実行間隔を15分に1回にし、目の前で確認できるように、10分後くらいにBackupするようにしてスケジュール変更してやってみたのですが、うまく自動Backupしてくれませんでした。

それで、今度はもう一度手動でcron.phpにアクセスして、Backupを行いました。これは正常にできました。その段階ではcronの実行はまだ15分に1回の設定のままとなっています。

ファイルが消えるかどうか確認しようと思いそのままBackupのフォルダを開いたままに放置します。別の作業をして忘れてしまい、15分はおろか1時間以上経過してからフォルダをのぞくとファイルは消えていません。フォルダの読み込みを更新しても大丈夫でした。ここで、再度cronの実行間隔を最初のように5分に1回に戻しました。

その後自動Backupのスケジュール設定メニューの「ファイルをいくつ残すか」という設定で、20に設定していることを思い出しました。再度メニューをよく見るとトータルのファイル数ではなくてコースごとのファイル数のようです。このため、こんな大きな値はいらないと考え直し、5に設定しなおしました。(ここが誤動作させる原因かもと思ったわけです)

再度目の前で自動Backupの可否を確認できるように、Backupの時間を10分後あたりに設定して、Backupスケジュールを変更、保存しました。

すると、今度はちゃんと自動でBackupを実行しました。その後2時間ほど経過していますが、ファイルもまったく消去されていません。しばらくこれで様子を見てみるつもりです。

なお、cron.phpですが、私も素人目にはファイルを消去するような命令らしきものはなかったように思います。ただ、気になったのは、このファイルがサーバ中にあるすべてのcronを動かすというような記述があったことです。もしこのcron.phpは単なるトリガー役であって、他のさまざまな自動実行のためのファイルを動かすことになるのであれば、私はどこにどのようなcron関係のファイルがあってどのような役割をしているのか全くわかっていませんので、もう検証のしようがありません。

以上とりあえずご報告まで。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿
東です。

現在21日の朝ですが、用時があって研究室に来ました。

不思議なことに、生成されていたバックアップファイルですが、やはり消えてしまっていますね。一晩のうちに何かがおこったようです。

...まったく謎です...
Junichi Azuma への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

東です。

その後の経過です。

水曜日と土曜日の午後1250にBackupを取る設定にしていますが、27日(土)朝にはいつものごとく自動Backupのディレクトリはすでに空っぽになっていました。自動バックアップ開始後しばらくそのディレクトリを開いてファイルを監視していましたが、5分や10分で消えてなくなることはありませんでした。

念のため1315ごろにすべてのファイルを別のディレクトリにコピーしておきました。帰宅すべく研究室を片付けていた午後5時ごろでも、自動Backupのディレクトリにファイルはまだ存在していました(再読み込みしてもちゃんと存在しているのを確認)。

翌日28日の朝、別のサーバの調子が悪いことに自宅で気づき、研究室へ。同時にMoodleの自動Backupディレクトリを確認したところ、完全にファイルは跡形なく消えていました。

このことから、ファイルの消去はかなり時間が経過してから行われることが確認されました。また、自動Backupそのものは必ず指定時刻には行われているといえるでしょう。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Ryoichi Nakayama の投稿

nakayamaです。

不思議ですね。moodleだけではないような気がしますが。
backupディレクトリを他の所に変更しても同じでしょう。
コピーすると残る、そのままだと消えるということでしょうか。
自動スケジュールでつくられたbackupファイルの所有者は誰でしょう?
Apacheとかでしょうか、それともsuExecで、利用者になっているのでしょうか? コピーすると利用者が所有者になりますよね。このあたりが違うのかとおもいますが。サーバの管理者に(あるいはLinuxをインストールした人)に相談するのも方法の一つかとおもいます。

Junichi Azuma への返信

Re: Back-upできないという問題について

- Minoru Akiyama の投稿
秋山です

もうひとつ、チェックポイントです。
手動でcron.phpを起動して、バックアップファイルを作ってしてしまうと、その日はスケジュールをパスされて、翌日じゃないと動かないという仕様になっているようです。
手動でcron.phpを起動した場合は、再度、スケジュールを設定しなおせば大丈夫です。
Minoru Akiyama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

秋山さま;

東です。な、なんとアドバイスいただいた、「再度、スケジュールを設定しなおせば」というのをやってみただけなのですが、ちゃんと指定したディレクトリにBackupファイルが生成されました。どうもありがとうございます。しばらくこれで様子を見てみます。

Minoru Akiyama への返信

Re: Back-upできないという問題について

- Junichi Azuma の投稿

秋山さま;

東です。今また研究室に来て確認したのですが、昨日ちゃんとできていたBackupファイル、すべて消えてなくなっています。いったいどうしたんでしょうね。ちなみに昨日の夕方の次のBackupは、水曜日の夕方になっていますので、昨日Backupファイル生成後はまだBackupスケジュールは入っていません。

ですので、昨日Backupディレクトリが空っぽになっていたという状況は、再度発現したことになります。

これだとスケジュールしていたBackup終了直後に、さっとUSB外付けHDにコピーしてあげないと... しかしこれではあまりBackupになりませんが... 困りました。