Linux/Unix自动备份网站的脚本


I. 起因


Linux&Unix下使用Apache或者Nginx都会把所有的虚拟主机网站放在一个类似于/www的根文件夹下,而且一般是一个网站一个文件夹。 一般来说如果用FTP备份网站,由于网站零碎文件非常多,所以下载起来非常慢,而且有时候通过FTP直接下载网站备份还有有一系列的问题:比如说从Linux&Unix的服务器上下载带权限的文件到Windows或者其他环境之后权限全部失效,恢复的时候又要重新设置权限……)

比较明智的做法是将各个网站打包成一个文件,这样既加快了下载备份的速度,又可以保存网站原来的结构和权限等信息。传输1024个1kb的文件和传输一个1MB的文件谁快想想就知道了……

PS:这种方法同样适用于Mysql

II. 具体操作


假设要批量备份/www目录下的各个网站(各个文件夹),/bbs/webbak/为备份的目标文件夹,在/www下执行

    ls -lh | grep / | awk '{print "#"split($9,myfname,"/")}{print "tar zcf /bbs/webbak/bak_"myfname[1]".gz "$9" &"}'

就会输出批量打包的命令,检查一下这些命令是否有明显错误(主要担心有奇葩目录名),再将这些内容输出>到一个.sh中,继而运行即可。效果是把所有的网站(各个文件夹)分别备份成独立的gz包放到指定的位置了。

即在/www目录运行

    ls -lh | grep / | awk '{print "#"split($9,myfname,"/")}{print "tar zcvf /bbs/webbak/20091128bak_"myfname[1]".gz "$9" &"}' > backup.sh

得到backup.sh

    tar zcf /bbs/webbak/20091128bak_2_for_bak.gz 2_for_bak/ & 
    tar zcf /bbs/webbak/20091128bak_888_for_bak.gz 888_for_bak/ & 
    tar zcf /bbs/webbak/20091128bak_apache22@.gz apache22@ & 
    tar zcf /bbs/webbak/20091128bak_bak.gz bak/ & 
    tar zcf /bbs/webbak/20091128bak_bbs.gz bbs/ & 
    tar zcf /bbs/webbak/20091128bak_blog.gz blog/ & 
    tar zcf /bbs/webbak/20091128bak_bloglai.gz bloglai/ & 
    tar zcf /bbs/webbak/20091128bak_chenbo.gz chenbo/ & 
    tar zcf /bbs/webbak/20091128bak_ems.gz ems/ & 
    tar zcf /bbs/webbak/20091128bak_myxgc200712.gz myxgc200712/ & 
    tar zcf /bbs/webbak/20091128bak_mzy.gz mzy/ & 
    tar zcf /bbs/webbak/20091128bak_nc2.gz nc2/ & 
    tar zcf /bbs/webbak/20091128bak_renshi.gz renshi/ & 
    tar zcf /bbs/webbak/20091128bak_student.gz student/ & 
    tar zcf /bbs/webbak/20091128bak_ucenter.gz ucenter/ & 
    tar zcf /bbs/webbak/20091128bak_uchome.gz uchome/ & 
    tar zcf /bbs/webbak/20091128bak_wangjian_blog.gz wangjian_blog/ & 
    tar zcf /bbs/webbak/20091128bak_www.gz www/ & 
    tar zcf /bbs/webbak/20091128bak_xiaoyouhui.gz xiaoyouhui/ & 
    tar zcf /bbs/webbak/20091128bak_ycblog.gz ycblog/ & 
    tar zcf /bbs/webbak/20091128bak_yihao.gz yihao/ & 
    tar zcf /bbs/webbak/20091128bak_zhaolei@.gz zhaolei@ & 
    tar zcf /bbs/webbak/20091128bak_zhouyu.gz zhouyu/ & 

继而执行backup.sh即可,tar的参数可以自己修改,最好不要带v参数,输出太暴力。


「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码完成支付


相关文章

发表新评论