Linux 下的svn自動備份

2021-09-24 23:54:16 字數 2815 閱讀 8486

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

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

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

備份命令:

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

在/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=$/$

# 定義全備路徑

baklog=

$/$.

log# 定義備份日誌

[ ! -f

"$" ] && mkdir -p

$exec 1>

$exec 2>&1

set -x

# 刪除歷史備份

find

$ -maxdepth 1 -

type f -mtime +$(expr

$ - 1) -

exec

echo

"delete {}" \; -

exec rm

"{}" \;

# 全備份

svnadmin hotcopy

$$

# 如果能列印版本號說明備份正確

svnlook youngest

$[ $? -ne 0 ] &&

exit 1

cd$

# 壓縮備份

tar cvzf

$.tar.gz

$/rm -rf

$

測試一下:

3)設定定時crontab

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

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

[root@localhost ~]$ crontab -l

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

[root@localhost ~]# 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

,雜湊數字。

原文見:svn完全備份svnadmin hotcopy

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

SVN自動完全備份

目的 能夠自動完全備份svn庫,並且生成相應的目錄名。實現方法 批處理命令 計畫任務 具體命令如下 echo 自動備份 at 23 00 every m,t,w,th,f,s,su c backupsvn.bat set mydate temp mydate.tmp set mytime temp ...

Linux 下的 mysql 自動備份

linux 下實現自動備份,主要就是編寫好執行備份的 shell script sh 檔案,設好許可權 可讀,可執行 然後利用 linux 定時任務crontab來執行備份指令碼就可以了。以後備份其他檔案也是這樣的執行過程 資料庫賬號 db user 資料庫密碼 db passwd 資料庫名稱 db...

linux下mysql自動備份

其實這個mysql自動備份的小指令碼非常簡單,下面是這個小指令碼的步驟。cd www mkdir mysqlbackup vi mysqlautobackup.sh 這個mysqlautobackup.sh的檔案裡寫入以下內容 filename date y m d mysql bin dir my...