zoukankan      html  css  js  c++  java
  • linux 备份svn

    下面具体描述备份的方法:
    ===============

    1、svnadmin dump备份工具
    ------------------------
        这是subversion官方推荐的备份方式。

        1)定义备份策略:
           备份频度:每周六进行一次全量备份,每周日到周五进行增量备份
           备份地点:备份存储路径到/home/backup/svn/
           备份命名:全量备份文件名为:weekly_fully_backup.yymmdd,增量备份文件命名为:daily-incremental-backup.yymmdd
           备份时间:每晚21点开始
           备份检查:每月末进行svnadmin load恢复试验。
        2)建立全量备份脚本:
           在~/下建立一个perl脚本文件,名为weekly_backup.pl,执行全量备份,并压缩备份文件,代码如下(本代码只针对一个库的备份,如果是多个库请做相应改动):
    #!/usr/bin/perl -w
    my $svn_repos="/home/svn/repos/project1";
    my $backup_dir="/home/backup/svn/";
    my $next_backup_file = "weekly_fully_backup.".`date +%Y%m%d`;

    $youngest=`svnlook youngest $svn_repos`;
    chomp $youngest;

    print "Backing up to revision $youngest/n";
    my $svnadmin_cmd="svnadmin dump --revision 0:$youngest $svn_repos >$backup_dir/$next_backup_file";
    `$svnadmin_cmd`;
    open(LOG,">$backup_dir/last_backed_up"); #记录备份的版本号
    print LOG $youngest;
    close LOG;
    #如果想节约空间,则再执行下面的压缩脚本
    print "Compressing dump file.../n";
    print `gzip -g $backup_dir/$next_backup_file`;

      3)建立增量备份脚本:
        在全量备份的基础上,进行增量备份:在~/下建立一个perl脚本文件,名为:daily_backup.pl,代码如下:

    #!/usr/bin/perl -w
    my $svn_repos="/home/svn/repos/project1";
    my $backup_dir="/home/backup/svn/";
    my $next_backup_file = "daily_incremental_backup.".`date +%Y%m%d`;

    open(IN,"$backup_dir/last_backed_up");
    $previous_youngest = <IN>;
    chomp $previous_youngest;
    close IN;

    $youngest=`svnlook youngest $svn_repos`;
    chomp $youngest;
    if ($youngest eq $previous_youngest)
    {
      print "No new revisions to backup./n";
      exit 0;
    }
    my $first_rev = $previous_youngest + 1;
    print "Backing up revisions $youngest .../n";
    my $svnadmin_cmd = "svnadmin dump --incremental --revision $first_rev:$youngest $svn_repos &gt; $backup_dir/$next_backup_file";
    `$svnadmin_cmd`;
    open(LOG,"&gt;$backup_dir/last_backed_up"); #记录备份的版本号
    print LOG $youngest;
    close LOG;
    #如果想节约空间,则再执行下面的压缩脚本
    print "Compressing dump file.../n";
    print `gzip -g $backup_dir/$next_backup_file`;
       4)配置/etc/crontab文件
       配置 /etc/crontab 文件,指定每周六执行weekly_backup.pl,指定周一到周五执行daily_backup.pl;
       具体步骤俺就不啰嗦了.
       5)备份恢复检查
       在月底恢复检查中或者在灾难来临时,请按照如下步骤进行恢复:恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份 weekly_full_backup.071201(举例),然后恢复紧挨着这个文件的增量备份 daily_incremental_backup.071202,再恢复后一天的备份071203,依次类推。如下:
    user1&gt;mkdir newrepos
    user1&gt;svnadmin create newrepos
    user1&gt;svnadmin load newrepos < weekly_full_backup.071201
    user1>svnadmin load newrepos < daily_incremental_backup.071202
    user1>svnadmin load newrepos < daily_incremental_backup.071203
    ....

    如果备份时采用了gzip进行压缩,恢复时可将解压缩和恢复命令合并,简单写成:
    user1>zcat weekly_full_backup.071201 | svnadmin load newrepos
    user1&gt;zcat daily_incremental_backup.071202 | svnadmin load newrepos

  • 相关阅读:
    9.11 eventbus
    9.10,,,实现new instanceof apply call 高阶函数,偏函数,柯里化
    9.9 promise实现 写完了传到gitee上面了,这里这个不完整
    9.5cors配置代码
    9.5 jsonp 实现
    9.5 http tcp https总结
    9.3 es6 class一部分 and es5 class 发布订阅
    8.30 cookie session token jwt
    8.30vue响应式原理
    warning: LF will be replaced by CRLF in renard-wx/project.config.json. The file will have its original line endings in your working directory
  • 原文地址:https://www.cnblogs.com/Mygirl/p/3177332.html
Copyright © 2011-2022 走看看