折腾了一个脚本,要点把服务器目录下的文件同步到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 有很多办法同步文件的。之前也弄过。
觉得部分人还是只有一台服务器的。自动备份到自己的电脑,避免自己忘记了什么一周一备份的事情。
如果你是一名技术人员可加我QQ 2651-0442-02,如果你是java技术人还可以加入QQ群 1784-9136-0
你将得到的不仅仅是技术的交流,还有职业机会,人生解惑.
首发地址:月小升博客 – https://java-er.com/blog/auto-backup-website-data/
你将得到的不仅仅是技术的交流,还有职业机会,人生解惑.
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
批处理写的不错
脚本不错