The OpenNET Project
 
Поиск (теги):    НОВОСТИ (+) КОНТЕНТ WIKI MAN'ы ФОРУМ twitter

Инкрементальный бекап 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-2015 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList
    п╡п╣я│п╣п╩я▀п╣ п╨п╟я─я┌п╦п╫п╨п╦ я─п╟п╥п╡п╩п╣п╨п╟я┌п╣п╩я▄п╫я▀п╣ пЁп╦я└п╨п╦ п╦п╫я┌я─п╣я│п╫я▀п╣ я└п╟п╨я┌я▀ я│п╪п╣я┬п╫я▀п╣ п╡п╦п╢п╣п╬ я│п╪п╣я┬п╫я▀п╣ п╦я│я┌п╬я─п╦п╦ п╦п╥ я│п╬я├я│п╣я┌п╣п╧