The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Инкрементальный бекап SVN (python backup subversion svn)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: python, backup, subversion, svn,  (найти похожие документы)
From: Владимир Русинов <vladimir@greenmice.info.> Date: Mon, 23 Oct 2010 17:02:14 +0000 (UTC) Subject: Инкрементальный бекап SVN Оригинал: http://greenmice.info/ru/node/117 SVN - наиболее распространенный и популярный вид vcs. Очень многие проекты используют именно его, и потеря данных оттуда хоть и не смертельна (наверняка у разработчиков есть все необходимое в рабочих копиях), но очень неприятна. Поэтому все же стоит озаботиться ведением бекапов. Однако бесмысленно каждый день делать полные дампы репозитоиев, тем более svn позволяет легко делать инкрементальный бекап. Для себя я это решил двумя скриптами. Первый: полный бекап - выполняется в моем случае раз в неделю. #!/bin/sh BACKUP_DIR=/home/backup/svn/ SVN_DIR=/var/svn # directory where repos located DATE=`date +%Y_%m_%d-%H_%M` #--------------------- cd $SVN_DIR for repo in *; do # skip non-dirs if [ -d $repo ]; then # preparing mkdir -p "$BACKUP_DIR/$repo/weekly/" NEWREV=`svn log -r head file://"$SVN_DIR/$repo"/ | egrep "r[0-9]+" | cut -d "r" -f 2 | cut -d " " -f 1` FILENAME="$repo-$DATE-$NEWREV.dump" FILEPATH="$BACKUP_DIR/$repo/weekly" # crearing dump svnadmin dump -q -r 0:$NEWREV "$SVN_DIR/$repo" > "$FILEPATH/$FILENAME" echo -n $NEWREV > "$BACKUP_DIR/$repo/svnrev" # compressing bzip2 "$FILEPATH/$FILENAME" # cleaning rm -f "$BACKUP_DIR/$repo/inc/"* 2> /dev/null find "$BACKUP_DIR/$repo/weekly/" -not -name "$FILENAME"* -and -type f | xargs rm -f fi done Второй - выполняется каждый день и сохраняет только те ревизии, которые были сделаны с момента последнего бекапа: #!/bin/sh BACKUP_DIR=/home/backup/svn/ SVN_DIR=/var/svn DATE=`date +%Y_%m_%d` ##------------------------ cd $SVN_DIR for repo in *; do if [ -d "$repo" ]; then OLDREV=`cat $BACKUP_DIR/$repo/svnrev` NEWREV=`svn log -r head file://"$SVN_DIR/$repo"/ | egrep "r[0-9]+" | cut -d "r" -f 2 | cut -d " " -f 1` if [ $OLDREV != $NEWREV ]; then OLDREV=$(($OLDREV+1)) mkdir -p "$BACKUP_DIR/$repo/inc/" svnadmin dump -q -r $OLDREV:$NEWREV --incremental "$SVN_DIR/$repo" > "$BACKUP_DIR/$repo/inc/$repo-$OLDREV-$NEWREV.dump" || continue bzip2 "$BACKUP_DIR/$repo/inc/$repo-$OLDREV-$NEWREV.dump" || continue echo -n $NEWREV > "$BACKUP_DIR/$repo/svnrev" fi fi done Восстанавливать: сначала svnadmin load полного бекапа, потом - svnadmin load всех инкрементальных.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1, kamazee, 16:31, 27/11/2010 [ответить] [смотреть все]
  • +/
    NEWREV='svnlook youngest file://"$SVN_DIR/$repo"/'
     
  • 2, Alexey, 18:49, 19/09/2011 [ответить] [смотреть все]
  • +/
    NEWREV='svnlook youngest /$SVN_DIR/$repo'
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor