|
Ключевые слова: backup, script, (найти похожие документы)
- RU.LINUX (2:5077/15.22) __________________________________________ RU.LINUX _ From : Timur I.Danyarhojaev 2:5020/400 05 Apr 00 11:58:02 Subj : Hужен инкpементальный бэкап в аpхив ------------------------------------------------------------------------------- From: "Timur I.Danyarhojaev" <[email protected]> Oleg Frolkov wrote: > Hужен инкpементальный бэкап в аpхив или хотя-бы в деpево подкаталогов. > Бэкапить надо по кpитеpию: все файлы после даты xxxx, если есть возможность > исключить опpеделенные каталоги (список котоpых хpанить в отдельном файле) > то еще лучше. > > Есть у tar-а опция -N но я так и не смог ни где найти фоpмат даты, котоpый > он понимает :( ЧИТАЙТЕ man'ы! Я нарисовал для себя програмку инкриментного бэкапа по схеме: Уровень Комментарий (дата на начало периода) 0 Полный Back Up (Full) 1 годовой (1999) 2 годовой (2000) . . . 10 квартальный (Апрель) 11 квартальный (Июль) 12 квартальный (Октябрь) 20 месячный (второй) 21 месячный (третий) 30 недельный (вторая) 31 недельный (третья) 32 недельный (четвертая) 33 недельный (пятая) 40 однодневный (среда) 41 однодневный (четверг) 42 однодневный (пятница) 43 однодневный (понедельник) Бэкапится все поддерево. ---------------------------------------------- #!/bin/sh case $# in 2) case $2 in Full) level=0 ;; [1-9]|[1-9][0-9]) level=$2 ;; *) echo $0 "<Value> mast be number - 1..99" exit 1 ;; esac ;; *) echo "Usage:" $0 "<Archive> <Value>" exit 1 ;; esac cd /YYYYYY/Log LCK_Flag="/tmp/LCK_BKP" PID_BKP=$$ umask 777 while ( true ); do if ( echo $PID_BKP > $LCK_Flag ) 2>/dev/null ; then break fi Delay=$((`/usr/local/bin/getrand 300`+1)) sleep $Delay done umask 022 now=`date "+%y-%m-%d %H:%M:%S"` logfile="`pwd`/`date "+%y%m%d"`.$1.log" upDIR=/XXXXXX srcDIR=/XXXXXX/$1 backupDIR=/mnt/BackUp/$1 lavelDIR=${backupDIR}/${level} dateFILE=${lavelDIR}/date backupFILE=${lavelDIR}/bkup_tar.bz2 if [ ! -d $srcDIR ]; then echo "Can't Find Source Directory" $srcDIR exit 1 fi if [ ! -d $backupDIR ]; then echo "Can't Find Back Up DISK" $backupDIR exit 1 fi if [ ! -d $lavelDIR ]; then echo "Can't Find Level " $lavelDIR exit 1 fi if [ $level = 0 ]; then echo "Full Back Up" > $logfile cd $upDIR tar clvf - \ $1 2>>$logfile | gzip -9 2>>$logfile >$backupFILE else prelevel=$level while ( true ); do let $((prelevel=$prelevel-1)) predateFILE=${backupDIR}/${prelevel}/date if [ -f $predateFILE ]; then break; fi if [ "$prelevel" = "-1" ]; then echo "Can't Find Pre Level Date " $predateFILE exit 1 fi done then=`cat $predateFILE` echo "Incriment Back Up Level" $level "from" $then "to" $now> $logfile cd $upDIR tar clvf - \ -N "$then" \ $1 2>>$logfile | bzip2 2>>$logfile >$backupFILE let $((level=$level+1)) while [ "$level" != "100" ]; do lavelDIR=${backupDIR}/${level} if [ -d $lavelDIR ]; then rm $lavelDIR/date fi let $((level=$level+1)) done fi echo $now > $dateFILE cd /YYYYYY/Log rm -f $LCK_Flag ------------------------------------------------------- XXXXXX, YYYYYY - поменять на свои --- ifmail v.2.15dev4 * Origin: PUES (2:5020/400)
|
Обсуждение | [ RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |