1. 程式人生 > >linux下SVN定時備份

linux下SVN定時備份

 利用svnadmin hotcopy可以實現完全備份,但不能進行增量備份。svnadmin hotcopy是將整個庫都“熱”拷貝一份出來,包括庫的鉤子指令碼、配置檔案等;任何時候執行這個指令碼都得到一個版本庫的安全拷貝,不管是否有其他程序正在使用版本庫。

    優點是:備份過程較快,災難恢復也很快;如果備份機上已經搭建了svn服務,甚至不需要恢復,只需要進行簡單配置即可切換到備份庫上工作。

    缺點是:比較耗費硬碟,需要有較大的硬碟支援。

    備份命令:

1

svnadmin hotcopy /path/to/repository /path/to/backup

    1)定義備份策略
    備份頻度:每天進行一次全量備份。
    備份地點:備份目錄以當前時間命名,備份路徑到/data/svnbackup/。
    備份保留時期:保留7天,超過7天的進行刪除。
    備份時間:每晚11點59分開始。
    備份檢查:備份完畢後自動檢查備份是否正確、記錄日誌。
    2)建立備份指令碼

    在/data/shells目錄建立備份指令碼svnbak.sh,假如svn倉庫路徑為/data/svn,要備份到/data/svnbackup/:

#!/bin/bash
#
# Filename:    svnbak.sh
# Revision:    1.0
# Date:        2014/11/07
# Author:      Qicheng
# Email:
# Website:
# Description: SVN完全備份
# Notes:       將指令碼加入crontab中,每天定時執行
#
MAXDAYS=7                       # 備份保留最大天數
TIME=`date +'%Y%m%d%H%M%S'`
SVNPATH=/data/svn               # 定義倉庫repos路徑
BAKDIR=/data/svnbackup          # 定義備份主目錄
BAKSUBDIR=${BAKDIR}/${TIME}     # 定義全備路徑
BAKLOG=${BAKDIR}/${TIME}.log    # 定義備份日誌
[ ! -f "${BAKSUBDIR}" ] && mkdir -p ${BAKSUBDIR}
exec 1>${BAKLOG}
exec 2>&1
 
set -x
# 刪除歷史備份
find ${BAKDIR} -maxdepth 1 -type f -mtime +$(expr ${MAXDAYS} - 1) -exec echo "Delete {}" \; -exec rm "{}" \;
# 全備份
svnadmin hotcopy ${SVNPATH} ${BAKSUBDIR}
# 如果能列印版本號說明備份正確
svnlook youngest ${BAKSUBDIR}
[ $? -ne 0 ] && exit 1
 
cd ${BAKDIR}
# 壓縮備份
tar cvzf ${TIME}.tar.gz ${TIME}/
rm -rf ${BAKSUBDIR}

測試一下:

    3)設定定時crontab

    每天23點59分開始執行指令碼:

1

59 23 * * * /bin/bash /data/shells/svnbak.sh

 輸入crontab -e 編輯當前使用者的定時任務:

檢視當前使用者的定時任務:

[[email protected] ~]$ crontab -l

刪除當前使用者的定時任務:

[[email protected] ~]# crontab -r

linux內建的cron程序能幫我們實現這些需求,cron搭配shell指令碼,非常複雜的指令也沒有問題。

cron介紹

我們經常使用的是crontab命令是cron table的簡寫,它是cron的配置檔案,也可以叫它作業列表,我們可以在以下資料夾內找到相關配置檔案。

/var/spool/cron/ 目錄下存放的是每個使用者包括root的crontab任務,每個任務以建立者的名字命名

/etc/crontab 這個檔案負責排程各種管理和維護任務。

/etc/cron.d/ 這個目錄用來存放任何要執行的crontab檔案或指令碼。

我們還可以把指令碼放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目錄中,讓它每小時/天/星期、月執行一次。

crontab的使用

我們常用的命令如下:

crontab [-u username]    //省略使用者表表示操作當前使用者的crontab -e (編輯工作表) -l (列出工作表裡的命令) -r (刪除工作作)

我們用crontab -e進入當前使用者的工作表編輯,是常見的vim介面。每行是一條命令。

crontab的命令構成為 時間+動作,其時間有分、時、日、月、週五種,操作符有

* 取值範圍內的所有數字

/ 每過多少個數字

- 從X到Z

,雜湊數字。

相關推薦

linuxSVN定時備份

 利用svnadmin hotcopy可以實現完全備份,但不能進行增量備份。svnadmin hotcopy是將整個庫都“熱”拷貝一份出來,包括庫的鉤子指令碼、配置檔案等;任何時候執行這個指令碼都得到一個版本庫的安全拷貝,不管是否有其他程序正在使用版本庫。     優點是:

linuxSVN定時備份並刪除歷史備份

sco 利用 exe abs tabs file 腳本 壓縮 安全 利用svnadmin hotcopy可以實現完全備份,但不能進行增量備份。svnadmin hotcopy是將整個庫都“熱”拷貝一份出來,包括庫的鉤子腳本、配置文件等;任何時候運行這個腳本都得到一個版本庫的

Linuxmysql定時備份及恢復

備份1.資料庫定時備份工作指令碼:(日期時間作為名稱的壓縮檔案,解壓開是sql指令碼)/root/backup/script/backup_mysql.sh2.備份輸出路徑:/root/backup/mysql3.執行計劃任務的命令:#crontab -e 開啟計劃任務編輯器

LINUXORACLE定時備份資料,使用的expdp。

1、root賬戶登陸,切換到ORACLE使用者。 su - oracle 2、建立一個名為te.sh的指令碼,並授權可執行。 mkdir /home/oracle/te/te.sh chomod 775 /home/oracle/te/te.sh 3、vi 編輯te.sh

linuxsvn定時更新專案

svn 專案中的 hooks 檔案中的 post-commit(該資料夾下有 tmp檔案 去除字尾即可) post-commit #!/bin/sh export LANG=zh_CN.GBK #svn 編碼是GBK export LANG=en_US.UTF-8 #svn 編碼是UTF-8 s

linux啟用定時任務對mysql資料庫進行定時備份

                                          &

linux使用定時任務完成mysql定期備份

Crontab相關 首先,定時任務需要安裝crontab 執行crontab 命令如果報command not found,就表明沒有安裝。 crond 是linux用來定期執行程式的命令。當安裝完成作業系統之後,預設便會啟動此任務排程命令。crond命令每分鍾

LinuxSVN的三種備份方式

$youngest=`svnlook youngest $svn_repos`; chomp $youngest; if ($youngest eq $previous_youngest) {   print "No new revisions to backup./n";   exit 0; } my $f

Linuxsvn的安裝與部署

myeclipse span .com 服務 點擊 svn服務器 。。 hook idt     最近工作碰到一個問題,我和一個同夥負責開發一個管理系統,基於原來的代碼上進行修改,每當他修改之後,我要再修改都要和他確定是不是最新的文件,才能進行修改。非常影響工作的效率,所以

LinuxSVN+多個Tomcat自動部署

mod .html 部署 update語句 hooks 參考 eba bsp auth 項目中都是jsp開發,所以用到Tomcat。 在我文章中也寫過多個Tomcat 的部署,具體可以參考:http://www.cnblogs.com/magmell/p/7045193.h

LinuxMySQL的備份和恢復

mysql備份 再也不用擔心數據丟失了 MySQL備份的原因 1. 災難恢復 2. 審計 3. 測試1234512345mysql的備份類型 1. 根據服務器的在線狀態: 熱備:服務器處於運行狀態 冷備:服務器出去停止狀態 溫備:服務器處於半離線狀態,只能讀,但是不能

linuxsvn的常用操作命令總結

svn版本管理導入代碼文件到 repo 版本庫我的代碼文件存放在 /var/www/html/; svn代碼版本庫的路徑 /application/svndata/repo (也就是剛剛我們創建的版本庫的位置);執行導入命令: svn import /var/www/html/svntest file:///

linux定時任務

spa 執行 編輯 span mod txt ont -s cron 1.首先創建一個 .sh 結尾的文件 如:task.sh 2.編輯 [[email protected] /]# vi task.shtask.sh裏面的命令date >> /h

LINUXsvn安裝部署

rc.d -- 版本 mit sta 密碼 secret all ner 1.#安裝yum install subversion 2.#測試svnserve --version3.#創建庫根路徑mkdir /usr/local/svn4.#創建一個項目庫svnadmin c

Linux svn 多個項目多用戶分配

usr osi 匿名 win 註意 () 禁止訪問 缺省值 管理 安裝步驟如下: 1、yum install subversion 2、輸入rpm -ql subversion查看安裝位置,如下圖: 輸入 svn –help可以查看svn的使用方法 需求 開發

svn定時備份

本指令碼為自動備份svn目錄下的版本庫,通過awk來遍歷庫,這樣做的好處是當有人新增新的版本庫之後不用更改程式碼,程式會自動認出來。 一下程式為周全備份指令碼 #!/bin/sh #version 1.0 #updated 2008.9.2 SVN_ROOT=”/home/svn

linuxsvn多使用者及多倉庫許可權配置

前言 安裝請參考前面文章,這裡只講使用者與許可權配置 1.建立倉庫和使用者 svnadmin create /var/svn/java  建立了一個java的倉庫 svnadmin create /var/svn/vue  又建立了一個前端的倉庫 [gro

linuxmysql資料備份和匯入

匯出整個資料庫結構和資料 mysqldump -h 127.0.0.1 -uroot -p database > /usr/local/dump.sql 匯出單個數據表結構和資料mysqldump -h 127.0.0.1 -uroot -p123456 database table > du

Linuxmysql的備份和還原命令

Linux下MySQL的備份和還原 Linux下的資料備份 Linux下的資料還原 介紹mysqldump的引數 最近一直在更新一個專案,給現場部署,每次都需要備份一下資料庫(以防有問題可以還原回去) Linux下的資

WindowsMySQL定時備份指令碼

一、寫定備份指令碼,儲存為.bat檔案 @echo off set hour=%time:~0,2% if "%time:~0,1%"==" " set hour=0%time:~1,1% set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%