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
