The OpenNET Project / Index page

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

Инкрементальный бекап 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:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру