Использование Subversion для резервного копирования общего назначения - PullRequest
15 голосов
/ 15 сентября 2008

Можно ли использовать Apache Subversion (SVN) в качестве инструмента резервного копирования общего назначения? (Как разновидность rsync альтернативы.)

Ответы [ 12 ]

9 голосов
/ 15 сентября 2008

Мне показалось, что эта статья - довольно крутое описание использования SVN для резервного копирования вашего домашнего каталога и многое другое:

Я использую Subversion для резервного копирования своих Linux-боксов. С небольшим творческим потенциалом, он легко покрывает:

  • Ежедневные снимки и резервное копирование вне сайта.
  • Простое добавление и удаление файлов и папок.
  • Подробное отслеживание версий файлов.

Также предусмотрены несколько бонусных функций:

  • Регулярные журналы электронной почты для отслеживания активности файловой системы через перехватчики событий Subversion.
  • Пользователи могут запросить извлечение своих домашних папок из любой ревизии репозитория.
  • Новые или замененные серверы могут быть настроены с помощью нескольких команд svn checkout.

Источник: http://www.mythago.net/svn_for_backup.html

Также найдена эта статья , которая показывает пример управления версиями вашего домашнего каталога. Это позволяет вам перенести свою среду, проверив свой домашний каталог на новом компьютере. Я делал что-то подобное и нашел это очень полезным.

4 голосов
/ 15 сентября 2008

В качестве резервной копии "общего назначения", я бы сказал, что это, вероятно, не самая лучшая идея, в основном по причинам, указанным другими (много лишних папок и неиспользованное дисковое пространство). Если вы хотите просто сохранять резервные копии, я бы сказал, что, возможно, есть более подходящие варианты, в зависимости от ваших потребностей, например: вам нужно сохранять каждую версию каждого отдельного файла или будет достаточно определенных снимков ваших данных?

Однако в моем офисе у нас небольшая команда из 6 человек, которая работает с общими файлами (например, руководствами по процедурам и процедурам, регистрационными формами и т. Д.). Чаще всего члены команды будут работать удаленно (из дома или во время путешествий) и часто в автономном режиме. Вместо того, чтобы использовать центральную настройку общих папок, мы используем SVN, чтобы предоставить каждому человеку полную рабочую копию папки, с которой он может работать, а также обращаться к ней и синхронизировать, когда это возможно. Это убивает двух зайцев одним выстрелом: каждый может получить доступ и редактировать файлы, даже находясь в автономном режиме, плюс это дает нам действительно большую избыточность в наших резервных копиях. Если мой ноутбук загорелся , это не проблема, потому что я могу просто проверить другую копию (очевидно, на другом компьютере). Если сервер загорелся, у нас будут резервные копии репозитория для восстановления. Если сервер И все резервные копии репо загорятся, то все, что вы потеряли, - это старые версии файлов. Единственный способ потерять текущие данные - это загадочно загореться сервер, резервные копии репозитория и каждый компьютер, на котором есть проверка.

Как уже говорили некоторые люди, SVN никогда не удалит информацию из хранилища, а это означает, что если вы хотите хранить резервные копии только в течение 60 дней, тогда, ну, вы не можете. Это не совсем так. Используя export , dump и import , вы можете эффективно уничтожать старые версии файлов. Это не красиво, но возможно.

4 голосов
/ 15 сентября 2008

При использовании SVN в качестве резервной копии для двоичных файлов следует помнить, что SVN удваивает размер ваших файлов, поскольку сохраняет локальную копию каждого файла (в файле .svn / text-base).

Кроме того, я использую SVN для резервного копирования. Просто добавьте все файлы и зафиксируйте их с помощью скрипта.

1 голос
/ 26 марта 2013

Вы также можете рассмотреть bup - Высокоэффективная система резервного копирования файлов на основе формата git packfile. Она основана на том, как git хранит данные, что очень эффективно для хранения файлы и их отличия.

1 голос
/ 06 мая 2010

Я использую SVN для резервного копирования моего компьютера, а также для синхронизации моего ноутбука и моего рабочего стола. Но у него есть проблемы, упомянутые в предыдущих ответах, в основном это удвоение использования диска. Я также чувствую, что из-за избытка файлов и процесса SVN, постоянно проверяющего мой HD на предмет изменений, моя машина работает медленнее.

Я хотел бы подчеркнуть, однако, что SVN отлично подходит для синхронизации разных машин, и вы также получаете бонус за возможность извлекать файл в любом месте, если вам нужно - я даже делаю это в своем браузере через веб-интерфейс, иногда.

Итак, у меня смешанные чувства по поводу использования SVN для резервного копирования общего назначения. Но если вы это сделаете, я рекомендую , а не для хранения библиотек, таких как фильмы, фотографии и музыка, потому что они имеют тенденцию быть большими (страдающими от использования двойного пространства) и неизменными - вам не нужна система управления версиями для этого, потому что в редких случаях, когда вы изменяете файл, вам обычно не нужны старые версии (а SVN не очень хорош в создании / хранении различий двоичных файлов, он сохраняет вся новая версия файла). Поэтому, если SVN не может быть адаптирован (мой долгосрочный проектный замысел) для этих случаев, я предлагаю использовать альтернативный метод для резервного копирования файлов такого типа.

1 голос
/ 15 сентября 2008

Одна вещь, которая меня сильно раздражает, это папки '.svn', которые svn помещает в каждую отслеживаемую папку.

Они выглядят раздражающими, когда вы копируете папку, вы должны помнить, что не следует копировать их (или ваша песочница может раздражать), и намного сложнее просматривать кучу папок, так как часто бывает много попаданий в папках ресурсов .svn.

Мне нравится идея использования управления исходным кодом для управления вашей средой. Но я лично не выбрал бы svn для этой работы. Я хотел бы пойти на что-то вроде мерзавца. Но это, наверное, только я ...

0 голосов
/ 21 марта 2013

Чтобы использовать SVN в качестве резервной копии в Linux, выполните следующие действия:

  1. Создать пустой репо.
  2. Извлечь пустой репозиторий в дерево папок, которое вы хотите сделать резервную копию.
  3. Используйте следующий фрагмент кода (svnauto). Вы должны заменить «myuser» и «mypassword» действительными учетными данными для вашего хранилища:
    #!/bin/sh
    svn status --depth=infinity --username=myuser --password=mypassword > /tmp/svnauto_tmp.list
    cat /tmp/svnauto_tmp.list | grep '^?' | sed -e 's/^?       /svn add --depth=infinity --force --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    cat /tmp/svnauto_tmp.list | grep '^!' | sed -e 's/^!       /svn delete --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    rm -f /tmp/svnauto_tmp.list
    svn update . --username=myuser --password=mypassword
    svn commit --username=myuser --password=mypassword --message "Automatic backup"

Сценарий выше будет добавлять / удалять и обновлять любые файлы и подкаталоги в текущем каталоге. Чтобы использовать его просто cd в папку, которую вы хотите сделать резервную копию (конечно, это должна быть рабочая копия), и запустите svnauto. Обратите внимание, что вам нужно установить grep и sed в вашей системе, и он создаст временный файл в / tmp. Его можно использовать из задания cron для ночного коммита, используя следующий скрипт cron:

#!/bin/sh
export LANG=en_US.UTF-8 && cd /my/directory && echo Starting backup $(date) > /root/backup_log.txt && /root/svnauto >> /root/backup_log.txt 2>&1 && echo Finished backup. >> /root/backup_log.txt && cat /root/backup_log.txt

Этот скрипт cron предполагает, что /my/directory - это папка, которую вы хотите сделать резервную копию (замените при необходимости). Также предполагается, что вы поместили скрипт svnauto в /root. Он создает журнал и отображает его в конце. Еще одна деталь: первая export необходима для svn, чтобы найти правильный язык. Возможно, вам придется настроить эту строку на свой собственный местный язык, чтобы она работала.

0 голосов
/ 15 ноября 2010

Это утверждение JoaoPSF неверно:

(а SVN плохо умеет делать / хранить разности двоичных файлов, сохраняет всю новую версию файла)

См. Эту цитату из Как Subversion обрабатывает двоичные файлы :

Обратите внимание, что то, является ли файл двоичным или нет, не влияет на объем пространства хранилища, используемого для хранения изменений в этом файле, а также не влияет на объем трафика между клиентом и сервером. В целях хранения и передачи Subversion использует метод сравнения, который одинаково хорошо работает с двоичными и текстовыми файлами; это совершенно не связано с методом сравнения, используемым командой svn diff.

0 голосов
/ 15 сентября 2008

Резервное копирование / etc с контролем исходного кода может быть очень полезно, если вы хотите отменить изменение, которое скрыло вашу систему, поэкспериментировать с изменениями или перенести изменения с одного сервера на другой.

Но множество каталогов .svn в Subversion могут помешать этому, не только при поиске, но и в некоторых случаях, например, в папках * .d, плохо спроектированные системы могут интерпретировать сами папки .svn как содержащие данные конфигурации.

Теперь я предпочитаю использовать Mercurial для резервного копирования / etc, так как он помещает одну папку .hg в / etc. Для реального резервного копирования, а не только для контроля версий, вам нужно скопировать эту папку .hg в другое место.

0 голосов
/ 15 сентября 2008

Использование SVN для резервного копирования может работать. Однако со временем может быть трудно удалить старые ревизии, которые не нужны. Скажем, вы хотели хранить резервные копии только на 30 или 60 дней. SVN не предоставляет простой способ удалить любую историю старше X дней. Если у вас нет способа очистить старую историю, вы в конечном итоге запустите резервный диск.

Вот цитата из SVN Book в команде svndumpfilter :

Так как Subversion хранит все в непрозрачная система базы данных, пытающаяся ручные настройки неразумны, если не совсем сложно. И как только данные были хранится в вашем хранилище, Subversion как правило, не обеспечивает легкий путь удалить эти данные. [13]

[13] Это, кстати, особенность, а не ошибка.

Я нашел unison лучшим вариантом, чем svn для альтернативы rsync.

...