Omeka Sのデータを安全に保護するためには、定期的なバックアップが不可欠です。本章では、バックアップの対象、具体的なバックアップ手順、自動化の方法、そしてサーバー移行時の手順について解説します。

バックアップの対象

Omeka Sのバックアップでは、以下の3つの要素を対象とします。

対象内容場所
データベースアイテム、メタデータ、ユーザー情報、サイト設定などMySQL/MariaDB
ファイルアップロードされた画像・動画・PDF等のメディアファイルfiles/ ディレクトリ
設定ファイルdatabase.ini、.htaccess、モジュール・テーマの設定Omeka Sインストールディレクトリ

データベースのバックアップ

mysqldumpを使用したバックアップ

MySQLまたはMariaDBのデータベースをバックアップするには、mysqldumpコマンドを使用します。

# データベースのバックアップ
mysqldump -u omeka -p omeka_database > omeka_backup_$(date +%Y%m%d).sql

# 圧縮してバックアップ
mysqldump -u omeka -p omeka_database | gzip > omeka_backup_$(date +%Y%m%d).sql.gz

Docker環境の場合は、コンテナ内でコマンドを実行します。

# Docker環境でのバックアップ
docker exec omeka-mariadb mysqldump -u omeka -pomeka omeka_database > omeka_backup_$(date +%Y%m%d).sql

データベースのリストア

バックアップからデータベースをリストアする場合は、以下のコマンドを実行します。

# リストア
mysql -u omeka -p omeka_database < omeka_backup_20240101.sql

# 圧縮ファイルからのリストア
gunzip < omeka_backup_20240101.sql.gz | mysql -u omeka -p omeka_database

ファイルのバックアップ

files/ディレクトリには、アップロードされたメディアファイルとそのサムネイルが格納されています。

# filesディレクトリのバックアップ
tar czf omeka_files_$(date +%Y%m%d).tar.gz /var/www/html/omeka-s/files/

# rsyncを使った差分バックアップ
rsync -avz /var/www/html/omeka-s/files/ /backup/omeka-files/

ディレクトリ構成

files/ディレクトリの構成は以下の通りです。

fileslmsraeqirduggiaieurn/mea//l/####

最低限、original/ディレクトリをバックアップしておけば、サムネイルは再生成可能です。ただし、完全なバックアップにはすべてのディレクトリを含めることを推奨します。

設定ファイルのバックアップ

以下の設定ファイルもバックアップ対象に含めます。

# 重要な設定ファイル
cp /var/www/html/omeka-s/config/database.ini /backup/
cp /var/www/html/omeka-s/config/local.config.php /backup/
cp /var/www/html/omeka-s/.htaccess /backup/

自動バックアップの設定

cronを使った定期バックアップ

cronジョブを設定して、定期的にバックアップを実行できます。

# crontabの編集
crontab -e

# 毎日午前3時にバックアップを実行
0 3 * * * /path/to/backup_script.sh

バックアップスクリプトの例:

#!/bin/bash

BACKUP_DIR="/backup/omeka/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# データベースのバックアップ
mysqldump -u omeka -pomeka_password omeka_database | gzip > $BACKUP_DIR/database.sql.gz

# ファイルのバックアップ
tar czf $BACKUP_DIR/files.tar.gz /var/www/html/omeka-s/files/

# 設定ファイルのバックアップ
cp /var/www/html/omeka-s/config/database.ini $BACKUP_DIR/
cp /var/www/html/omeka-s/config/local.config.php $BACKUP_DIR/

# 30日以上前のバックアップを削除
find /backup/omeka/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;

echo "Backup completed: $BACKUP_DIR"

gdriveを使ったクラウドバックアップ

Google Driveにバックアップを自動的にアップロードする方法については、gdriveを用いたOmeka Sの簡易バックアップを参照してください。

gdriveコマンドを使用することで、バックアップファイルをGoogle Driveに自動的にアップロードできます。

# gdriveを使用したアップロード
gdrive upload omeka_backup_$(date +%Y%m%d).tar.gz

AWS Copilotを使った定期バックアップ

AWS環境で運用している場合、AWS Copilotを使用して定期的なバックアップを自動化できます。詳しくは、AWS Copilotを用いたOmeka Sデータの定期バックアップを参照してください。

サーバー移行

Docker環境の移行

Docker環境でOmeka Sを別のサーバーに移行する手順については、Omeka-S Docker環境を別サーバーに移行する完全ガイドで詳しく解説しています。

基本的な移行手順は以下の通りです。

  1. 旧サーバーでのバックアップ
# データベースのバックアップ
docker exec omeka-mariadb mysqldump -u omeka -pomeka omeka > backup.sql

# ボリュームデータのバックアップ
docker run --rm -v omeka-files:/data -v $(pwd):/backup alpine tar czf /backup/files.tar.gz -C /data .
  1. 新サーバーへのファイル転送
scp backup.sql files.tar.gz user@new-server:/path/to/backup/
  1. 新サーバーでのリストア
# docker-compose.ymlの配置と起動
docker-compose up -d

# データベースのリストア
docker exec -i omeka-mariadb mysql -u omeka -pomeka omeka < backup.sql

# ファイルのリストア
docker run --rm -v omeka-files:/data -v $(pwd):/backup alpine tar xzf /backup/files.tar.gz -C /data

手動インストール環境の移行

Docker環境でない場合の移行手順は以下の通りです。

  1. データベースのエクスポート(旧サーバー)
  2. files/ディレクトリの転送
  3. Omeka Sのインストール(新サーバー)
  4. データベースのインポート
  5. database.iniの更新
  6. ファイルパーミッションの設定

Omeka Sの更新時のバックアップ

Omeka S本体やモジュールを更新する前には、必ずバックアップを取得してください。更新に伴うエラーへの対応については、Omeka Sのv4.0.4からv4.1へのアップデートに伴うエラー対応を参照してください。

オブジェクトストレージの活用

ファイルの保存先としてオブジェクトストレージを使用することで、バックアップと可用性を向上させることができます。詳しくは、Omeka Sのファイルをmdx.jpのオブジェクトストレージに保存するを参照してください。

関連記事