热门标签 | 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给我。



推荐阅读
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
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社区 版权所有