热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GForgeCommunityEdition全自动备份脚本解决方案

最近,我在CentOS5服务器上成功部署了GForge5.7CommunityEdition。与AdvancedServer版本相比,虽然功能略有简化,但仍然能够满足大多数开源项目管理的需求。为了确保数据安全,我开发了一套全自动备份脚本,该脚本能够定期备份GForge的数据和配置文件,并将其存储在远程服务器上,以防止数据丢失。此外,该脚本还具备错误检测和日志记录功能,便于故障排查和维护。

前不久,我在CentOS 5服务器上成功配置了GForge 5.7 Community Edition,与其Advance Server版相比,功能简单很多,但足够满足我公司现阶段业务需要。CE版不具备自动备份功能,这给服务器维护带来了极大的不便。因此,我编写了以下脚本,用于进行自动备份。


#!/bin/sh # GForge Community Edition 自动完全备份脚本 # 作者Xu Cheng,如有改进,请将副本发送一份给我。 # xc@virtualdell.com #CREATE BACKUP DIRECTRY bkdir=$HOME'/Backup' if [ ! -d "$bkdir" ] then mkdir "$bkdir" echo "Backup Beginning..." else echo ${bkdir}' existed, please remove it!' exit 0 fi #BACKUP POSTGRESQL bkpgsql=${bkdir}/PostgreSql_backup.dump pg_dump -Upostgres [请用GForge数据库名] > ${bkpgsql} if [ -f "${bkpgsql}" ] then echo 'PostgreSql Backup Finished...' else echo 'PostgreSql Backup Failed!' exit 0 fi #BACKUP MAILMAN tar -czvPf MailMan_backup.tar.gz /var/lib/mailman mv MailMan_backup.tar.gz ${bkdir} if [ -f "${bkdir}/MailMan_backup.tar.gz" ] then echo 'MailMan Backup Finished...' else echo 'MailMan Backup Failed!' exit 0 fi #BACKUP SUBVERSION bakdate=$(date +%Y%m%d%H%M) svnrepos="/svnroot" cd $svnrepos if [ -d "$bkdir" ] && [ -w "$bkdir" ] ; then # Now $repo has folder names = project names for repo in *; do # do svn dump for each project echo "Taking backup/svndump for: $repo" echo "Executing : svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump /n" # Now finally execute the backup svnadmin dump $repo > $bkdir/$repo-$bakdate.svn.dump done else echo "Unable to continue SVN backup process!" echo "$bkdir is *NOT* a directory or you do not have write permission!" fi tar -czvPf backup_${bakdate}.tar.gz ${bkdir} mv backup_${bakdate}.tar.gz $HOME rm -rf ${bkdir}

送佛送到西,我对代码进行简要的讲解。GForge需要备份的内容包括PostgreSQL数据库、MailMan电子邮件、SubVersion仓库。脚本中,首先使用pg_dump -Upostgres命令进行PostgreSQL数据库备份。然后,再备份MailMan整个文件夹。最后也是最复杂的,是备份SVN仓库。默认的路径为/svnroot,该目录不能用常规命令进行复制或压缩,必须使用svnadmin dump命令单独为每个项目进行备份。因此,我在脚本中使用遍历/svnroot的方式,依次备份各个项目。

备份完毕后,生成的备份文件将放至用户的主目录下,文件名为backup_[备份时的日期时间].tar.gz。为了方便使用,可编辑crontab按时自动执行。

欢迎大家对此脚本进行改进,请将改进后的副本Email给我。



推荐阅读
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
author-avatar
小啊丌-619
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有