SVN Incremental Backup
SVN_VAR=/opt/svnbackup_files
DATETIME=`date +%Y%m%d`
#for rep in ${SVN_REPPATH}/*; #1
for word in $(cat /root/backup_repo.txt); #2
do
TSTAMP=`date +%s`
# CURR_REV=`${SVN_BINPATH}/svnlook youngest ${rep}` #1
CURR_REV=`${SVN_BINPATH}/svnlook youngest $SVN_REPPATH/${word}` #2
# REP_BASE=`basename $rep` #1
REP_BASE=`basename $word` #2
if [ -e ${SVN_VAR}/status/dates/${REP_BASE}.dt ] ; then
REP_LAST_BK_TSTAMP=`cat ${SVN_VAR}/status/dates/${REP_BASE}.dt`
REP_LAST_BK_REV=`cat ${SVN_VAR}/status/revisions/${REP_BASE}.rev`
else
REP_LAST_BK_TSTAMP=0
REP_LAST_BK_REV=0
fi
if [ ${CURR_REV} -gt ${REP_LAST_BK_REV} ] ; then
echo "**********************************************************"
# echo "`date --rfc-2822` - Incremental back up ${rep} : " #1
echo "`date --rfc-2822` - Incremental back up ${word} : " #2
echo " oldest revision ${REP_LAST_BK_REV} - newest revision ${CURR_REV}"
echo
REP_LAST_BK_REV_1=$((REP_LAST_BK_REV+1))
DATE=`date +%Y-%B`
`mkdir -p ${DUMP_DIR}/${DATETIME}/${REP_BASE}/`
DUMPFILE=${DUMP_DIR}/${DATETIME}/${REP_BASE}/${REP_BASE}-${DATETIME}-${REP_LAST_BK_REV}-${CURR_REV}.repo
`mkdir -p ${SVN_VAR}/status/dates/`
`mkdir -p ${SVN_VAR}/status/revisions/`
# ${SVN_BINPATH}/svnadmin --quiet dump $rep --incremental -r${REP_LAST_BK_REV_1}:${CURR_REV}> ${DUMPFILE} #1
${SVN_BINPATH}/svnadmin --quiet dump $SVN_REPPATH/${word} --incremental -r${REP_LAST_BK_REV_1}:${CURR_REV}> ${DUMPFILE} #2
echo ${TSTAMP} > ${SVN_VAR}/status/dates/${REP_BASE}.dt
echo ${CURR_REV} > ${SVN_VAR}/status/revisions/${REP_BASE}.rev
# bzip2 --compress --best ${DUMPFILE}
gzip --best ${DUMPFILE}
fi
done
echo "Backup successfully completed on ${DATETIME}"
#echo `ls -hl ${DUMP_DIR}/*.bz2`
#echo `ls -hl ${DUMP_DIR}/*.dmp`
#subversion incremental backup
# make sure to get the subversion environment variables
#. /etc/profile.d/subversion.sh
#Note ::
# Option 1 - Read Repository from path SVN Path
# Option 2 - Read repository list from file
# path to subversion binaries
SVN_BINPATH=${SVN_HOME}/bin
# path to parent of all repositories to be dumped
SVN_REPPATH=/var/www/svn
# destination directory for backup files
DUMP_DIR=/home/backup/svn
# status directory
SVN_VAR=/opt/svnbackup_files
DATETIME=`date +%Y%m%d`
#for rep in ${SVN_REPPATH}/*; #1
for word in $(cat /root/backup_repo.txt); #2
do
TSTAMP=`date +%s`
# CURR_REV=`${SVN_BINPATH}/svnlook youngest ${rep}` #1
CURR_REV=`${SVN_BINPATH}/svnlook youngest $SVN_REPPATH/${word}` #2
# REP_BASE=`basename $rep` #1
REP_BASE=`basename $word` #2
if [ -e ${SVN_VAR}/status/dates/${REP_BASE}.dt ] ; then
REP_LAST_BK_TSTAMP=`cat ${SVN_VAR}/status/dates/${REP_BASE}.dt`
REP_LAST_BK_REV=`cat ${SVN_VAR}/status/revisions/${REP_BASE}.rev`
else
REP_LAST_BK_TSTAMP=0
REP_LAST_BK_REV=0
fi
if [ ${CURR_REV} -gt ${REP_LAST_BK_REV} ] ; then
echo "**********************************************************"
# echo "`date --rfc-2822` - Incremental back up ${rep} : " #1
echo "`date --rfc-2822` - Incremental back up ${word} : " #2
echo " oldest revision ${REP_LAST_BK_REV} - newest revision ${CURR_REV}"
echo
REP_LAST_BK_REV_1=$((REP_LAST_BK_REV+1))
DATE=`date +%Y-%B`
`mkdir -p ${DUMP_DIR}/${DATETIME}/${REP_BASE}/`
DUMPFILE=${DUMP_DIR}/${DATETIME}/${REP_BASE}/${REP_BASE}-${DATETIME}-${REP_LAST_BK_REV}-${CURR_REV}.repo
`mkdir -p ${SVN_VAR}/status/dates/`
`mkdir -p ${SVN_VAR}/status/revisions/`
# ${SVN_BINPATH}/svnadmin --quiet dump $rep --incremental -r${REP_LAST_BK_REV_1}:${CURR_REV}> ${DUMPFILE} #1
${SVN_BINPATH}/svnadmin --quiet dump $SVN_REPPATH/${word} --incremental -r${REP_LAST_BK_REV_1}:${CURR_REV}> ${DUMPFILE} #2
echo ${TSTAMP} > ${SVN_VAR}/status/dates/${REP_BASE}.dt
echo ${CURR_REV} > ${SVN_VAR}/status/revisions/${REP_BASE}.rev
# bzip2 --compress --best ${DUMPFILE}
gzip --best ${DUMPFILE}
fi
done
echo "Backup successfully completed on ${DATETIME}"
#echo `ls -hl ${DUMP_DIR}/*.bz2`
#echo `ls -hl ${DUMP_DIR}/*.dmp`
# make sure to get the subversion environment variables
#. /etc/profile.d/subversion.sh
#Note ::
# Option 1 - Read Repository from path SVN Path
# Option 2 - Read repository list from file
# path to subversion binaries
SVN_BINPATH=${SVN_HOME}/bin
# path to parent of all repositories to be dumped
SVN_REPPATH=/var/www/svn
# destination directory for backup files
DUMP_DIR=/home/backup/svn
# status directory
SVN_VAR=/opt/svnbackup_files
DATETIME=`date +%Y%m%d`
#for rep in ${SVN_REPPATH}/*; #1
for word in $(cat /root/backup_repo.txt); #2
do
TSTAMP=`date +%s`
# CURR_REV=`${SVN_BINPATH}/svnlook youngest ${rep}` #1
CURR_REV=`${SVN_BINPATH}/svnlook youngest $SVN_REPPATH/${word}` #2
# REP_BASE=`basename $rep` #1
REP_BASE=`basename $word` #2
if [ -e ${SVN_VAR}/status/dates/${REP_BASE}.dt ] ; then
REP_LAST_BK_TSTAMP=`cat ${SVN_VAR}/status/dates/${REP_BASE}.dt`
REP_LAST_BK_REV=`cat ${SVN_VAR}/status/revisions/${REP_BASE}.rev`
else
REP_LAST_BK_TSTAMP=0
REP_LAST_BK_REV=0
fi
if [ ${CURR_REV} -gt ${REP_LAST_BK_REV} ] ; then
echo "**********************************************************"
# echo "`date --rfc-2822` - Incremental back up ${rep} : " #1
echo "`date --rfc-2822` - Incremental back up ${word} : " #2
echo " oldest revision ${REP_LAST_BK_REV} - newest revision ${CURR_REV}"
echo
REP_LAST_BK_REV_1=$((REP_LAST_BK_REV+1))
DATE=`date +%Y-%B`
`mkdir -p ${DUMP_DIR}/${DATETIME}/${REP_BASE}/`
DUMPFILE=${DUMP_DIR}/${DATETIME}/${REP_BASE}/${REP_BASE}-${DATETIME}-${REP_LAST_BK_REV}-${CURR_REV}.repo
`mkdir -p ${SVN_VAR}/status/dates/`
`mkdir -p ${SVN_VAR}/status/revisions/`
# ${SVN_BINPATH}/svnadmin --quiet dump $rep --incremental -r${REP_LAST_BK_REV_1}:${CURR_REV}> ${DUMPFILE} #1
${SVN_BINPATH}/svnadmin --quiet dump $SVN_REPPATH/${word} --incremental -r${REP_LAST_BK_REV_1}:${CURR_REV}> ${DUMPFILE} #2
echo ${TSTAMP} > ${SVN_VAR}/status/dates/${REP_BASE}.dt
echo ${CURR_REV} > ${SVN_VAR}/status/revisions/${REP_BASE}.rev
# bzip2 --compress --best ${DUMPFILE}
gzip --best ${DUMPFILE}
fi
done
echo "Backup successfully completed on ${DATETIME}"
#echo `ls -hl ${DUMP_DIR}/*.bz2`
#echo `ls -hl ${DUMP_DIR}/*.dmp`
Comments
Post a Comment