EMIT-Japan WebCT レター

  • 登録・解除
  • プライバシーポリシー

【管理者向けミニティップス】コマンドラインによるコースバックアップ

今回はコマンドラインによるコースのバックアップを行う方法を説明します。これを行うことにより無人で定時バックアップを取るというような事を簡単に行うことが出来ます。

管理者によるコースバックアップ

コースをバックアップするには「デザイナによるバックアップ」と「管理者によるバックアップ」の2通りの方法があります。いずれも目的は同じですが手順、およびバックアップの生成先などが若干異なります。デザイナによるバックアップは自身が管理しているコースのみにしか行う事が出来ませんが、管理者によるバックアップは全てのコースに対してバックアップを行う事も出来ます。

(なお本記事は主にUnix系OS用に記述していますが、一部Windowsでも利用できます。 コマンドの呼び出し方等が異なりますので注意してください。)

管理者によるバックアップを行うには、管理者インタフェースにログインし「コース管理」→ 「バックアップ」より行う事が出来ます。ここでさらに「作成」、「リストア」、「削除」が選択できます。管理者によってバックアップが行われた場合は$install_dir/webct/webct/generic/admin/backup以下にコース名_月日_時分.zipという名前でファイルが生成されます。

コマンドラインで行う

バックアップの操作をコマンドラインで行うには$install_dir/webct/webct/generic/admin/以下に存在するbatch.plを起動します。--helpオプションを付けて起動すると以下のように表示されます。

$ ./batch.pl --help
USAGE
batch.pl [--backup] [--reset | --delete] [--help] [--noprompt] [-f FILE] [-p PATTERN] [course1 course2 ...]

とりあえず./batch.pl --backupのように起動して対話形式モードでバックアップしてみましょう。

$ ./batch.pl --backup

------------------
Term Selection
------------------

[i] : Include all courses in the term
[e] : Exclude all courses in the term
Press [i] or [e] for each of the following terms:

Default Term e

既存 e

Finished selecting terms.

上記のように学期ごとにバックアップするかどうかを尋ねられます。(ここではデフォルトのものと「既存」という学期が存在しています)。学期単位でのバックアップが不要であれば「e」を選択します。 (なお日本語の学期はそのまま出力されてきますのでUTF-8が表示できないプロンプトだと化けてしまいます。)

すると今度はカテゴリの選択になります。

------------------
Category Selection
------------------

[i] : Include all courses in the category
[e] : Exclude all courses in the category
[v] : View the courses in the category

Press [i] [e] or [v] for each of the following categories:

カテゴリ

該当するカテゴリのバックアップを取りたい場合は「i」を。不要な場合は「e」を選択します。カテゴリ内のコースごとに選択、非選択を選びたい場合は「v」を選んでください。

最後に「View the list of courses to be worked on?」と聞かれるので「y」とするとバックアップされるコース一覧が表示されます。ここでEnterを押すとバックアップ、「x」を選択するとキャンセルされます。

Press the Enter key to begin or [x] to abort:

Backing up frontend.

frontend_Nov09_1605.zip created
Backing up moge.

moge_Nov09_1605.zip created
Backing up taki.

taki_Nov09_1605.zip created
Backing up test2.

test2_Nov09_1605.zip created
Backing up demo.
(略 ...)
Output from this script can be found in the file batch.log

またコースを予め指定してバックアップを行う事も出来ます。

$ ./batch.pl --backup test
View the list of courses to be worked on? [y][n] y

test
Press the Enter key to begin or [x] to abort:

Backing up test.

test_Nov09_1609.zip created
Output from this script can be found in the file batch.log

この場合もプロンプトが出現して、最終的にバックアップを行うか行わないか対話形式で決定する事になります。

無人バックアップ

今までの方法だと対話形式になり、何か入力しないとバックアップを開始する事が出来ませんでした。自動的に定時バックアップを取るといったような無人バックアップを行うには非対話モードでバックアップする必要があります。

非対話モードでバックアップするには--nopromptというオプションを付けて起動します。この場合、必ずコースの指定が必要な事に注意してください。例えばtestというコースを非対話モードでバックアップするには以下のようにします。

./batch.pl --backup --noprompt test
Backing up test.

test_Nov09_1614.zip created
Output from this script can be found in the file batch.log

batch.logというログが残るので標準出力、標準エラー出力が不要かもしれません。そのような場合は/dev/nullに向けておくと良いでしょう(Unix系OSの場合のみ)

$ ./batch.pl --backup --noprompt test >/dev/null 2>&1

また、コースを並べるとその分だけバックアップが行われます。

$ ./batch.pl --backup --noprompt test test2
Backing up test.

test_Nov09_1617.zip created
Backing up test2.

test2_Nov09_1617.zip created
Output from this script can be found in the file batch.log

また、-pオプションを与えるとパターンマッチになります。 これはperl互換の正規表現を与える事が出来ます。 (--nopromptで実行する前に一度このオプションを外してバックアップされるコースのリストを確認すると良いでしょう)

$ ./batch.pl --backup -p test
View the list of courses to be worked on? [y][n] y

safari_test
taki_test
taki_test2
test
test2
Press the Enter key to begin or [x] to abort: x

これを利用すると全てのコースをバックアップする事が出来ます。 この場合「-p .*」等とします。シェルによっては「*」の展開を防ぐために 適当に「'.*'」のようにクォートする必要があるでしょう。

./batch.pl --backup -p '.*'

最終的に非対話モードで画面に何も表示せずに全てのコースのバックアップを取得するには以下のようにします。

$ ./batch.pl --backup --noprompt -p '.*' > /dev/null 2>&1

これらのコマンドをcron等に登録しておくとバックアップの自動化が可能になります。

文責: 福山貴幸
(2004年 12月)