TOP ▲ itcore TOPTIPSbkup_hp.php  タグ:バックアップ 世代 ssh rsync

HP世代バックアップ | itcore 2019年

概要

Webサーバのコンテンツをバックアップサーバに日次コピーする。
複数世代バックアップする。
OS部分はバックアップしない。

sshパスワードなし接続

バックアップサーバで公開鍵を作成します。
[バックアップサーバ]
# /usr/bin/ssh-keygen
すべて何も入力しないでenter

生成された公開鍵をメモ帳にコピー
# cat /root/.ssh/id_rsa.pub

[本番サーバ]
# cp -ip /etc/ssh/sshd_config /etc/ssh/sshd_config_`date "+%Y%m%d"`
# vi /etc/ssh/sshd_config
/PubkeyAuthentication
PubkeyAuthentication yes
/AuthorizedKeysFile
AuthorizedKeysFile .ssh/authorized_keys

公開鍵の保存
# mkdir -p /root/.ssh
# vi /root/.ssh/authorized_keys
バックアップサーバの公開鍵を作成(既にある場合は追加)

RSync & ログ送信

[バックアップサーバ]
# mkdir -p /root/cron
# vi /root/cron/rsync.sh
src=10.0.0.40
src_dir=/var/www/www
dst_dir=/var/www/itcore
log_0=/root/cron/rsync_0.log
echo "[日次バックアップ]";
rsync -av root@$src:$src_dir/ $dst_dir/ |& tee $log_0 | grep -v -E '/$'
echo "[曜日 7世代]";
w=`date '+%w'` # 曜日を数字で返す
rsync -av root@$src:$src_dir/ $dst_dir.w$w/ | grep -v -E '/$'
echo "[月 12世代]";
m=`date '+%m'` # 月を数字で返す
rsync -av root@$src:$src_dir/ $dst_dir.m$m/ | grep -v -E '/$'
echo "[年 無制限]";
y=`date '+%Y'` # 年を数字で返す
rsync -av root@$src:$src_dir/ $dst_dir.y$y/ | grep -v -E '/$'
echo "[ログ送信]";
data1=[cron]`crontab -l | grep rsync`
data2=[rsync]`ls -l $log_0`
data3=[sent]`tail -1 $log_0`
curl -k -s -S -X POST "https://erp.itcore.jp/sv_005_bkup.php" \
--data-urlencode "mode=log_put" \
--data-urlencode "host=www.itcore.jp" \
--data-urlencode "data=$data1 $data2 $data3" \
-u "user:password"

参照 REST API でログサーバを作る

# chmod +x /root/cron/rsync.sh
# crontab -e
0 3 * * * /root/cron/rsync.sh > /root/cron/rsync.log 2>&1

手動で実行
# /root/cron/rsync.sh |& tee /cron/rsync.log
最初の実行時にメッセージが出るので、yesとする