環境
家の中の無線環境。
今回は
アプリ兼DBサーバ から ファイルサーバへDBのバックアップを行います。
バックアップするファイル
sqliteはこのdatabase.dbという中に入ってる。
ファイルサーバ側(バックアップデータを受け取る側)の設定
samba設定をする。
これやることでファイル共有できるようになる。
ちなみにラズパイファイルサーバの作り方
アプリ兼DBサーバの設定(バックアップするデータがある方)
コンソール画面開いてひらすらコマンド打ってく作業
ファイルサーバー(バックアップ先)への認証情報の設定
sudo nano /etc/samba/backup_credentials
これ書く
username=ここにユーザー名かく
password=ここにパスワードかく
バックアップスクリプト作る&書く
sudo nano /home/arisa/backup_sqlite.sh
これ書く
#!/bin/bash
# SQLiteデータベースの場所
SOURCE_DB="/home/arisa/Videos/database.db"
# 一時マウント先
MOUNT_POINT="/mnt/housework_db_back"
# Samba共有フォルダ
SHARE="//100.64.16.101/raid1"
# 認証情報ファイル
CREDENTIALS="/etc/samba/backup_credentials"
# 日付付きのバックアップファイル名
BACKUP_FILE="database_$(date +'%Y%m%d').db"
# 共有フォルダをマウント
if ! mountpoint -q "$MOUNT_POINT"; then
sudo mount -t cifs -o credentials=$CREDENTIALS,iocharset=utf8,uid=$(id -u arisa),gid=$(id -g arisa),file_mode=0660,dir_mode=0770 "$SHARE" "$MOUNT_POINT"
fi
# バックアップをサブフォルダにコピー
if [ ! -d "$MOUNT_POINT/housework_db_back" ]; then
mkdir "$MOUNT_POINT/housework_db_back"
fi
cp "$SOURCE_DB" "$MOUNT_POINT/housework_db_back/$BACKUP_FILE"
# パーミッションの設定
chmod 600 "$MOUNT_POINT/housework_db_back/$BACKUP_FILE"
# マウント解除
sudo umount "$MOUNT_POINT"
マウントポイントの作成
sudo mkdir -p /mnt/housework_db_back
systemdを再読み込み
sudo systemctl daemon-reload
スクリプトを定期実行するように設定します。
crontab -e
0 0 * * * /home/arisa/backup_sqlite.sh
スクリプトに実行権限を付与
sudo chmod +x /home/arisa/backup_sqlite.sh
スクリプトを手動で実行して動作確認します
/home/arisa/backup_sqlite.sh
cronジョブ(定期実行予定)が入っているか確認
crontab -l
もしジョブが設定されていない場合は↓
no crontab for arisa
ジョブ追加
crontab -e
追加内容
※毎日昼の13時にshファイル実行
0 13 * * * /home/arisa/backup_sqlite.sh