ウェブディレクトリと MySQL のバックアップ

Linux で CIFS をマウント

RHEL, CentOS から Windows ファイル共有 CIFS (Common Internet File System) を利用するには mount.cifs (samba-client パッケージ) を使用する。

/sbin/mount.cifs //SERVER/PATH /mnt/cifs -o user=USER

% で区切れば USER と PASSWORD を入力でき、スクリプト向き。パスワードをスクリプトに書く場合は、専用ユーザーを作ってバックアップディレクト以外の共有にアクセスできないように気をつけること。

/sbin/mount.cifs //SERVER/PATH /mnt/cifs -o user=USER%PASSWORD

アンマウントはマウントポイントを引数に指定するだけ。

/sbin/umount.cifs /mnt/cifs

mount, umount からも利用できるので mount -t cifs //SERVER/PATH /mnt/cifs, umount /mnt/cifs でも可。

ウェブディレクトリのバックアップ

普通な感じ。

cd /var/www
tar czf /mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).tar.gz ./wordpres

ディレクトリに移動してからバックアップする感じ。-C <dir>

tar czf /mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).tar.gz -C /var/www ./wordpres

対象がシンボリックリンクの時に、シンボリックリンクファイルじゃなくてリンク先をバックアップする感じ。-h

tar chzf /mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).tar.gz -C /var/www ./wordpress

MySQL のバックアップ

普通な感じ。

mysqldump -u USER -p wordpress >/mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).sql

-p の後に PASSWORD が入力でき、スクリプト向き。-p と PASSWORD の間にスペースは入れない。パスワードをスクリプトに書く場合は、専用ユーザーを作ってバックアップ対象以外のデータベースにアクセスできないように気をつけること。read-only にするといい。

mysqldump -u USER -pPASSWORD wordpress >/mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).sql

gzip に渡して圧縮しちゃう。

mysqldump -u USER -pPASSWORD wordpress | gzip -9 >/mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).sql.gz

poohsec-backup スクリプト

#!/bin/bash
LANG=C
test ${UID} -ne 0 && {
    echo "ERROR: ${0} requires root privileges." >&2
    exit 1
}
mount | fgrep -q '/mnt/backup' && {
    echo 'ERROR: Mount point (/mnt/backup) is used.' >&2
    exit 1
}
/sbin/mount.cifs //SERVER/PATH /mnt/backup -o user=USER%PASSWORD || {
    echo 'ERROR: Cannot mount filesystem.' >&2
    exit 1
}
echo -n 'BACKUP WWW: ' >&2
tar chzf /mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).tar.gz -C /var/www ./wordpress \
    && echo 'Ok.' >&2 \
    || echo 'Fail.' >&2
echo -n 'BACKUP SQL: ' >&2
mysqldump -u USER -pPASSWORD wordpress \
    | gzip -9 >/mnt/backup/poohsec-$(date +%Y%m%d%H%M%S).sql.gz \
        && echo 'Ok.' >&2 \
        || echo 'Fail.' >&2
/sbin/umount.cifs /mnt/backup || {
    echo 'ERROR: Cannot umount filesystem.' >&2
    exit 1
}
exit 0
タイトルとURLをコピーしました