刚开始拿到这个任务时,有点发懵,真想跟老大说:“这个我做不来的”。但我们程序员都是骄傲的,哪能动不动就说自己不行,对吧。只能硬着头皮,抱着试试看的态度了。
首先,我先手动做了一下备份工作。主要两部分:
一,将整个tomcat目录打成tar.gz包,然后使用FileZilla下载到windows。
二,mysql数据的备份,使用Mysql workbench工具的数据导出导入功能。
做到这里,貌似我已经完成了整个备份工作,我跟自己说,好像也不难嘛。接着就是用脚本来完成上面的步骤了。
本来想着通过挂载mount,实现linux上备份后直接放到windows上的,可后来发现,linux在外网而windows在内网,没法搞,哎!
换一种思路,任务分解:
一,写shell脚本,定时导出mysql数据库和备份tomcat目录的
二,windows上写bat批处理脚本,实现文件的下载,导入mysql数据、文件替换、tomcat启停
理想是丰满的,现实是骨干的。
此时面临各种问题,简单列举一下:
1.如何定时执行脚本 2.如何用命令备份mysql 3.tomcat目录是比较大的,里面包含了图片视频,肯定不可能每次都全量备份,决定备份最近一周的文件
4.bat批处理完全没写过 5.命令下载文件,使用ftp,后来又遇到此次linux只能ssh连接.....
问题多我们不怕,怕的是无从下手。
不断去百度、谷歌,查找各种博客,吸收前辈们总结的经验。
下面简单说下此次最后的解决问题的方法,总结下,以便后续查阅
1.如何定时执行脚本?
写好需要定时执行的备份脚本back.sh
修改/etc/crontab
添加
30 18 * * 1,3,5 root /home/XXX/back.sh
表示每周1、3、5的18点30分执行备份
重新启动crond
# /etc/rc.d/init.d/crond restart
2.如何用命令备份mysql ?
/usr/bin/mysqldump -u$db_user -p$db_pass $db_name > back.sql
备份成sql文件,导入时执行此sql文件,即可
3.备份最近一周修改的文件
使用find命令实现查找,--parent连目录结构一起拷贝
find . -mtime -7 -exec cp --parent {} $temp \;
4.windows如何命令ssh连接linux
使用putty和psftp工具,实现远程调用shell脚本、文件下载
echo cd backup > sftp.txt
echo get %day_name%.zip >> sftp.txt
echo bye >> sftp.txt
psftp 192.168.1.180 -l %user% -pw %pwd% -P %port% < sftp.txt
5.windows如何用命令解压缩
只研究了解压缩zip格式的,tar.gz未研究呵呵,能实现就可以了(小富即安)
下载安装winrar工具,暂时未找到其他好的办法,若有更好的方法,麻烦告知。
解压到当前目录:
winrar x %day_name%.zip %day_name%\
6.最后,添加windows定时计划,百度吧
我是参考的如下blog
http://blog.csdn.net/liqfyiyi/article/details/8812971