SVN備份

權限位:
[root@localhost home] # ll svnhotcopy.sh
-rwxr-xr-x 1 root root 862 Nov 24 18:55 svnhotcopy.sh
[root@localhost home] # 

bash代碼
[root@localhost home] # cat svnhotcopy.sh 
#!/bin/bash
MAXDAYS=7                       # 備份保留數目
TIME=`date +'%Y%m%d_%H%M%S'`
SVNPATH=/home/svn               # 定義倉庫repos路徑
BAKDIR=/home/backup             # 定義備份主目錄
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 "{}" \;
# 全備份
/usr/bin/svnadmin hotcopy ${SVNPATH} ${BAKSUBDIR}
# 若是能打印版本號說明備份正確
/usr/bin/svnlook youngest ${BAKSUBDIR}
[ $? -ne 0 ] && exit 1

cd ${BAKDIR}
# 壓縮備份
tar -cvzf ${TIME}.tar.gz ${TIME}/
rm -rf ${BAKSUBDIR}
# 能夠經過rsync把備份文件同步到遠程備份機上,此處省略。
[root@localhost home] # 

計劃任務
[root@localhost home] # cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  0 3  * * * root /home/svnhotcopy.sh

[root@localhost home] # 

重載計劃任務
[root@localhost home] # systemctl reload crond.service
相關文章
相關標籤/搜索