折腾了一个脚本,要点把服务器目录下的文件同步到SVN 目录下,然后提交給SVN进行备份
好处,SVN 是增量备份,网站传了图片,只增加这部分图片的备份。
之前一直用压缩包,发现,1G压缩包的网站文件,随便改了个图,又要备份1G的压缩包
backsite.sh
TIME=`date "+%Y-%m-%d %H:%M:%S"`
echo "site:"$TIME >> /backup/backupwebsite/time.log
export LANG=zh_CN.UTF-8
str=b2b2017,b2b2017admin,watch,watch_admin
var=${str//,/ } #这里是将var中的,替换为空格
for v in $var
do
WEB_NAME=$v
echo $v
BCK_DIR="/backup/backupwebsite/website/$WEB_NAME"
DATE=`date +%F`
mkdir -p $BCK_DIR
rsync -av /www/$WEB_NAME/ $BCK_DIR
done
svn update /backup/backupwebsite/ --username yuexiaosheng --password 123456 --no-auth-cache
svn add /backup/backupwebsite/* --force --username yuexiaosheng --password 123456 --no-auth-cache
svn ci -m '' /backup/backupwebsite/ --username yuexiaosheng --password 123456 --no-auth-cache
backmysql.sh
str=b2b2017,b2b2017admin,watch,watch_admin
这个是批量的要点,决定了主要网站目录下 /www/下那些目录自动同步过来
svn update /backup/backupwebsite/ --username yuexiaosheng --password 123456 --no-auth-cache
--username yuexiaosheng --password 123456 --no-auth-cache 带上账户和密码,否则root 的crontab 定时命令无效。
下一个脚本 批量备份数据库,组合SVN 可以自动提交
提出质疑:mysql是否带增量备份的机制呢
str=watch,think_b2b,b2b,bug
var=${str//,/ } #这里是将var中的,替换为空格
for v in $var
do
DB_NAME=$v
echo $v
BIN_DIR="/usr/local/mysql/bin"
DATE=`date +%F`
BCK_DIR="/backup/backupwebsite/mysql/single/$DB_NAME"
mkdir -p $BCK_DIR
$BIN_DIR/mysqldump --default-character-set=utf8 --opt $DB_NAME | gzip > $BCK_DIR/$DATE.gz
done
TIME=`date "+%Y-%m-%d %H:%M:%S"`
echo "mysql:"$TIME >> /backup/backupwebsite/time.log
MYSQL 采用了压缩包的方式
核心思路:将网站的重要文件全部备份到SVN里 实现增量备份。然后利用我上一篇文章的windows 下 SVN自动执行的命令,就可以自动的拖到本地来。 SVN 跨平台比较好。
实现了远程服务器文件,自动增量备份到本地机器。
当然如果是Linux服务器之间的远程双机备份,不需要通过SVN 有很多办法同步文件的。之前也弄过。
觉得部分人还是只有一台服务器的。自动备份到自己的电脑,避免自己忘记了什么一周一备份的事情。
You must be logged in to post a comment.
批处理写的不错
脚本不错