[Anki]データのバックアップ

TIPS

せっかく構築した自分だけのAnkiサーバーですから、データが消えてしまうリスクは確実に防いでおきたいですね。

Linuxの標準機能である cron(クーロン)という自動実行システムを使って、「毎日夜中に自動でデータを圧縮してバックアップし、古いものは自動で削除する」 という運用を手間なく実現する方法を解説します。

今回は、セキュリティを考慮して作成した anki ユーザーの権限でバックアップを設定します。

1. バックアップ用スクリプトの作成

まずは、バックアップ処理をまとめた小さなプログラム(シェルスクリプト)を作成します。

1. anki ユーザーに切り替える

sudo su - anki

2. バックアップ保存用のディレクトリを作成する

mkdir -p ~/anki-backup

3. スクリプトファイルを作成する

nano ~/anki-backup.sh

4. 以下のコードを貼り付ける

このスクリプトは、データを丸ごと圧縮(tar.gz形式)して保存し、ストレージ容量を圧迫しないよう「7日以上前の古いバックアップ」を自動で削除する仕組みになっています。

#!/bin/bash

# 日付を取得(例: 20260305_020000)
DATE=$(date +"%Y%m%d_%H%M%S")

# ディレクトリの指定
SOURCE_DIR="/home/anki/anki-data"
BACKUP_DIR="/home/anki/anki-backup"
BACKUP_FILE="$BACKUP_DIR/anki_data_$DATE.tar.gz"

# 1. データを圧縮してバックアップを作成
tar -czf "$BACKUP_FILE" -C /home/anki anki-data

# 2. 7日以上経過した古いバックアップファイルを自動削除
find "$BACKUP_DIR" -name "anki_data_*.tar.gz" -type f -mtime +7 -delete

5. 保存して終了し、スクリプトに実行権限を付与する

chmod +x ~/anki-backup.sh

2. cron(自動実行)の設定

作成したスクリプトを「毎日決まった時間」に動かすよう設定します。

1. crontab(自動実行のスケジュール表)を開く

※ まだ anki ユーザーのままで実行してください。

crontab -e

(初回起動時はエディタを聞かれることがあります。その場合は 1(nano)を選んでください)

2. ファイルの一番下に以下の1行を追記する

これは「毎日、深夜の午前2時0分にスクリプトを実行する」という設定です。

0 2 * * * /home/anki/anki-backup.sh

3. 保存して閉じる

crontab: installing new crontab と表示されれば設定完了です。

最後に exit と入力して、元のユーザー(sudo権限のあるユーザー)に戻っておきましょう。

exit

3. バックアップの復元方法(万が一の時)

もしサーバーのデータが飛んでしまったり、操作を誤ってカードを消してしまったりした場合は、以下の手順で簡単に元に戻せます。

  1. 壊れてしまった現在のデータを退避(または削除)する。sudo mv /home/anki/anki-data /home/anki/anki-data_broken
  2. 最新のバックアップファイルを解凍して展開する。sudo tar -xzf /home/anki/anki-backup/anki_data_20260305_020000.tar.gz -C /home/anki
  3. Ankiサーバーを再起動する。sudo systemctl restart anki-sync-server.service

これで、サーバー構築からセキュリティ対策、タイムアウトのチューニング、そして自動バックアップまで、商用サービスレベルの堅牢なAnki同期サーバーが完成しました!

コメント

タイトルとURLをコピーしました