自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

技術分享:如何刪除SVN備份庫

開發(fā) 項目管理
在學習SVN的過程中,你可能會遇到刪除SVN備份庫方面的問題,本文就向大家介紹一下刪除SVN備份庫的方法,希望通過本文的介紹大家能夠掌握其方法。

本節(jié)和大家一起學習一下如何刪除SVN備份庫,之前我們學習了刪除SVN版本控制信息,大家可以和本節(jié)對比一下,看看二者有什么區(qū)別,歡迎大家一起來學習刪除SVN備份庫的方法。

刪除SVN備份庫
問題描述:
用svnadminhotcopy備份的svn庫是svn一個完整拷貝,保證了備份的完整、可靠。但用這種方式備份出現(xiàn)的問題是:備份占用空間比較大,需要定期進行刪除,而我們發(fā)現(xiàn)刪除非常困難。
嘗試如下:
1、輸入:rm-rfrepos_backup1
提示訪問拒絕。進到repos/db/revs里面發(fā)現(xiàn)里面的文件權限都是
-r--r--r--
這樣的,所以誰也不能用上面的命令進行刪除了。
2、輸入:rm-Rrepos_backup1
遇到每個文件都提示:是否重寫權限,選擇是,才會刪除成功:
overriderwxrwx---4294967294/usersfor1117/repos1/db/revprops/11249?一個庫往往有數(shù)十個萬個文件,這種刪除方式顯然不現(xiàn)實。

3、輸入:chmod-R777repos_backup1;rm-Rrepos_backup1
等待半天,提示堆棧溢出。輸入ulimit-a查看,堆棧限制為7715;修改這個參數(shù)必須重啟系統(tǒng),服務器級別比較高,不敢重啟,只好作罷。于是想到了用腳本來進行刪除。

刪除SVN備份方案設計如下:
目標:定期刪除備份數(shù)據(jù),并保證備份數(shù)據(jù)一直介于7到16份之間
步驟:
1、每月1號刪除上個月21號之前所有數(shù)據(jù)
2、每月15號刪除上個月所有數(shù)據(jù)和本月8號前的所有數(shù)據(jù)
3、每月25號刪除本月19號之前的所有數(shù)據(jù)。
用perl腳本實現(xiàn),代碼如下:

#!/usr/bin/perl
#Author:xuejiang
#Site:http://www.scmbbs.com #p#

#本單元:定期刪除SVN備份數(shù)據(jù),并保證備份數(shù)據(jù)一直介于7到16份之間,
#適用:備份目錄以mmdd的日期格式命名。
useCwd;
useFile::Find;
&main();
submain()
{
#取得當前時間,根據(jù)時間設置定期進行刪除
my$targetDir="/home/backup/svn/hotcopy2/";#定義備份目錄。
my($sec,$min,$hour,$day,$month,$year,$wday,$yday)=localtime(time());
$month++;
my$today=sprintf("%02d",$day);
if($today!~/(01$|15$|25$|)/)
{
exit(0);
}
my$monthday=sprintf("%02d%02d",$month,$day);
my$thismonth=sprintf("%02d",$month);
my($lastmonth,$passdate,$tempstr);
#定義刪除的目錄數(shù)組,對每個目錄調(diào)用函數(shù)deleteDir進行刪除。
chdir($targetDir);
my@dir=<*>;
print@dir;
if($thismonth=~/01/)
{
$lastmonth='12';
}else
{
$lastmonth=$thismonth-1;
}
foreachmy$dir(@dir)
{
if($dir=~/[^0-9]/)
{
next;
}
#每月1號刪除上個月21號之前所有數(shù)據(jù)
if($today=~/01$/)
{
$passdate=$lastmonth.'21';
if($lastmonth=='12')
{
$tempstr=substr($dir,0,2);
if(($tempstrne"01")&&($dir<$passdate))
{
&deleteDir($targetDir.$dir);
}
}else
{
if($dir<$passdate)
{
&deleteDir($targetDir.$dir);
}}}
#每月15號刪除上個月所有數(shù)據(jù)和本月8號前的所有數(shù)據(jù) #p#
if($today=~/15$/)
{
$passdate=$thismonth.'08';
if($dir<$passdate)
{
&deleteDir($targetDir.$dir);
}
if($lastmonth=='12')
{
$tempstr=substr($dir,0,2);
if($tempstr=="12")
{
&deleteDir($targetDir.$dir);
}}}
#每月25號刪除本月19號之前的所有數(shù)據(jù)。
if($today=~/25$/)
{
$passdate=$thismonth.'19';
if($dir<$passdate)
{
&deleteDir($targetDir.$dir);
}
if($lastmonth=='12')
{
$tempstr=substr($dir,0,2);
if($tempstr=="12")
{
&deleteDir($targetDir.$dir);
}}}}}
#遞歸遍歷各目錄,遍歷各個文件,每個文件先進行chmod777filename操作,再進行rm-rffilename操作。

subdeleteDir($)
{
my($dir)=@_;
print"loginthedir:$dir\n";
my$handle;
opendir($handle,$dir);
while(defined(my$ndir=readdir($handle)))
{
if(($ndireq".")||($ndireq".."))
{
next;
}
$ndir=$dir."/".$ndir;
if(-f$ndir)
{
ls`chmod777$ndir`;##如果需要此步。
print"file:$ndir\n"ifunlink($ndir);
}else
{
print"Dir:$ndir\n";
deleteDir($ndir);
}}
closedir($handle);
rmdir($dir);
print"nowlocate:$dir\n";
}。本節(jié)關于刪除SVN備份庫介紹完畢。

【編輯推薦】

  1. Lniux和Windows下如何刪除SVN版本信息?
  2. 如何刪除SVN及其恢復問題名師指點
  3. 刪除SVN版本信息行之有效的辦法
  4. SVN基本操作之新手上路
  5. 跟蹤報道SVN客戶端常用命令 

 

 

責任編輯:佚名 來源: it168.com
相關推薦

2010-06-02 16:09:05

SVN協(xié)議

2010-05-26 15:39:36

SVN服務

2010-05-26 14:53:28

SVN版本庫自動備份

2010-05-25 14:54:18

2010-05-28 12:55:23

2010-05-26 15:07:36

SVN版本庫自動備份

2010-06-02 16:32:28

SVN代碼管理

2010-05-31 18:20:25

配置SVN訪問

2010-05-26 18:32:07

SVN庫

2010-05-26 18:43:42

SVN庫

2010-05-25 11:24:30

SVN安裝配置

2010-05-31 13:11:45

MyEclipse下S

2010-06-01 15:41:09

創(chuàng)建SVN倉庫

2010-05-31 20:07:31

SVN版本控制插件

2010-05-24 14:00:43

Flex Svn

2010-05-27 14:59:30

配置SVN1.4

2010-05-28 18:53:36

配置SVN1.4.5

2010-06-01 19:06:27

刪除SVN

2010-06-01 18:26:11

刪除SVN

2010-06-02 11:16:31

點贊
收藏

51CTO技術棧公眾號