之前有过一篇 《将 VPS 备份到 Dropbox 的脚本》,现在研究了一下备份到 git 的脚本,去他喵的 Dropbox

#!/usr/bin/env bash

MYSQL_USR=""
MYSQL_PWD=""

WEB_DIR=/data/wwwroot
NGINX_CONF_DIR=/usr/local/tengine/conf
SCRIPT_DIR=/root/bin
LOCAL_BAK_DIR=/data/backup/to_git
COMMIT="Automatic Backup @ $(date)"

eval `ssh-agent -s`
ssh-add ~/.ssh/github

rm -rf $LOCAL_BAK_DIR
mkdir -p $LOCAL_BAK_DIR

git clone [email protected]:kokororin/backup.git $LOCAL_BAK_DIR

cd $LOCAL_BAK_DIR
git rm -rf .
git clean -fxd

cp -r $WEB_DIR $LOCAL_BAK_DIR
cp -r $NGINX_CONF_DIR $LOCAL_BAK_DIR/nginx_conf
cp -r $SCRIPT_DIR $LOCAL_BAK_DIR/scripts
crontab -l > $LOCAL_BAK_DIR/scripts/crontab

mkdir $LOCAL_BAK_DIR/db

for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USR -p$MYSQL_PWD -B -N -e 'SHOW DATABASES' | xargs`; do
    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USR -p$MYSQL_PWD ${db} >  $LOCAL_BAK_DIR/db/${db}.sql
    sed -i '$d' $LOCAL_BAK_DIR/db/${db}.sql)
done

cd $LOCAL_BAK_DIR

git add -A
git commit -m "$COMMIT"
git push origin master

rm -rf $LOCAL_BAK_DIR