VisualSVN Server dla Windows zawiera wbudowaną funkcję tworzenia kopii zapasowych i weryfikacji repozytoriów SVN zgodnie z harmonogramem: visualsvn.com/server/features/backup
nie wiem na pewno, ale na pewno niektóre narzędzia, takie jak 7-zip, byłyby w stanie skompresować dane ze STDIN, co oznacza, że możesz użyć pierwszego stylu również w systemie Windows.
nickf
5
Właśnie patrzę na to sam i jeden komentarz z docs svnbook.red-bean.com/nightly/en/… jest taki, że otrzymasz bardzo dużą wydajność zrzutu svnadmin, chyba że użyjesz opcji --deltas.
Korzystanie z 7Zip: svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn Spowoduje to utworzenie pliku o nazwie „backup.7z”, który zawiera pojedynczy plik „backupname.svn”, który jest wyjściem svnadmin dump.
Matt
4
@Josh Stodola bash :for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Możesz uruchomić to polecenie w dowolnym momencie i utworzyć bezpieczną kopię repozytorium, niezależnie od tego, czy inne procesy korzystają z repozytorium.
Możesz oczywiście ZIP (najlepiej 7-Zip) kopię zapasową. IMHO Jest to najprostsza z opcji tworzenia kopii zapasowych: w przypadku katastrofy nie pozostaje nic innego, jak rozpakować ją z powrotem na miejsce.
@daremon: Sugeruję przeczytanie odpowiedzi na posty, do których prowadzi link, w szczególności ten, który wspomina zrzut svnadmin, nie zawiera plików kontrolnych repozytorium.
Powerlord,
blisko wyścigu, ale głosuję na zrzut svnadmin po przeczytaniu odpowiedzi zasugerowanych przez R. Bemrose'a
mobibob
Polecenie hotcopy nie zastępuje ani nie zwiększa generowanych przez siebie kopii zapasowych. Więc jeśli planujesz zautomatyzować go w systemie Windows za pomocą harmonogramu zadań, spójrz na następujący plik wsadowy: cfchimp.com/wordpress/2008/05/…
Ryan Sampson
1
Słowo ostrzeżenia. Nie kopiuj kopii lustrzanej repozytorium svnsync'd podczas działania svnsync! Powstała kopia może być uszkodzona. Zobacz ten wątek, aby uzyskać szczegółowe informacje: subversion.open.collab.net/ds/…
zvolkov
24
Na stronie Subversion dostępny jest skrypt hotbackup.py, który jest całkiem przydatny do automatyzacji tworzenia kopii zapasowych.
Używam svnsync , który konfiguruje serwer zdalny jako serwer lustrzany / podrzędny. Dwa tygodnie temu mieliśmy awarię serwera i mogłem dość łatwo przestawić urządzenie podrzędne na pozycję podstawową (wystarczyło zresetować identyfikator UUID w repozytorium urządzeń podrzędnych do oryginalnego).
Kolejną korzyścią jest to, że synchronizacja może być uruchamiana przez pośrednika, a nie jako zadanie na dowolnym serwerze. Mam klienta z dwiema sieciami VPN synchronizującymi repozytorium między nimi.
więc oczywiście synchronizuje najnowsze wersje repo między nimi?
PositiveGuy,
1
Mimo że jest w tytule, nie wiem, czy nazwałbym to „synchronizacją”. To naprawdę kopia zapasowa, w której weźmie poprawki do mistrza i umieści je na niewolniku. Jeśli dokonałeś modyfikacji w niewolniku, albo przerwałyby „synchronizację”, albo doprowadziłyby do szaleństwa. Przeznaczeniem tego narzędzia jest tworzenie zewnętrznych serwerów tylko do odczytu, ale robi to godną podziwu pracę polegającą na tworzeniu serwera kopii zapasowych.
Tom Mayfield
1
Zaletą svnsync jest to, że możesz uruchamiać to bardzo często. Co dziesięć minut lub nawet przy każdym zatwierdzeniu (za pomocą haka). Zaletą tego jest to, że można zmniejszyć potencjalną utratę danych, którą można uzyskać między ostatnią kopią zapasową a utratą repozytorium na żywo.
Jeśli więc możesz zatrzymać serwer, zrób to i po prostu skopiuj repozytorium za pomocą jakiegoś skryptu lub narzędzia do tworzenia kopii zapasowych. Cobian Backup pasuje tutaj ładnie, ponieważ może automatycznie zatrzymywać i uruchamiać usługi oraz może tworzyć przyrostowe kopie zapasowe, więc tworzysz kopie zapasowe tylko tych części repozytorium, które niedawno się zmieniły (przydatne, jeśli repozytorium jest duże i tworzysz kopię zapasową w zdalnej lokalizacji ).
Przykład:
Zainstaluj Cobian Backup
Dodaj zadanie kopii zapasowej:
Ustaw źródło na folder repozytorium (np. C:\Repositories\),
Dodaj zdarzenie po utworzeniu kopii zapasowej, "START_SERVICE"VisualSVN,
Ustaw inne opcje w razie potrzeby. Utworzyliśmy przyrostowe kopie zapasowe, w tym usuwanie starych, harmonogram tworzenia kopii zapasowych, miejsce docelowe, kompresję włącznie. dzielenie archiwów itp.
istnieją 2 główne metody tworzenia kopii zapasowych serwera svn, pierwszy to hotcopy, które utworzą kopię plików repozytorium, głównym problemem z tym podejściem jest to, że zapisuje dane o bazowym systemie plików, więc możesz mieć pewne trudności z próbą repostore ten rodzaj kopii zapasowej na innym serwerze SVN lub innym komputerze. istnieje inny rodzaj kopii zapasowej zwany zrzutem, ta kopia zapasowa nie zapisuje żadnych informacji na temat bazowego systemu plików i jego możliwości nadawania na dowolnym serwerze SVN opartym na subversion tigiris.org.
o narzędziu do tworzenia kopii zapasowych możesz użyć narzędzia svnadmin (jest w stanie wykonać hotcopy i zrzut) z wiersza polecenia, ta konsola znajduje się w tym samym katalogu, w którym mieszka twój serwer svn, lub możesz znaleźć w Google narzędzia do tworzenia kopii zapasowych svn.
zalecam, aby wykonać oba rodzaje kopii zapasowych i zabrać je z biura na konto e-mail, usługę amazon s3, ftp lub usługi lazurowe, w ten sposób uzyskasz bezpieczną kopię zapasową bez konieczności hostowania serwera svn gdzieś poza Twoje biuro.
To proste narzędzie pozwala na zrobienie kopii zapasowej zrzutu lokalnego i zdalnego repozytorium subversion. Oprogramowanie działa w taki sam sposób jak „svnadmin”, ale nie jest nakładką graficzną. Zamiast tego użyj bezpośrednio bibliotek subversion, aby umożliwić tworzenie zrzutu w trybie autonomicznym bez żadnego dodatkowego narzędzia.
Dzięki za udostępnienie tego, robi dokładnie tak, jak podano.
Ed DeGagne,
3
Chciałbym po prostu skopiować cały katalog repo do mojej lokalizacji kopii zapasowej. W ten sposób, jeśli coś się stanie, możesz po prostu skopiować katalog z powrotem i być gotowym do pracy od razu.
W razie potrzeby pamiętaj o zachowaniu uprawnień. Zazwyczaj dotyczy to tylko maszyn z systemem Linux.
nie jest to całkowicie bezpieczne, jeśli ktoś dokonuje zatwierdzenia podczas operacji kopiowania - zdarzyło mi się to, nawet gdy tylko 4 osoby miały dostęp do repozytorium i rzadko go używały. Zobacz odpowiedź Duncana na temat korzystania z hotcopy.
nickf
Jeśli jednak pracujesz całkowicie solo, zakładam, że jest to bezpieczny sposób na wykonanie kopii zapasowej repo? Używam subversion do moich osobistych projektów i właśnie to robię.
Andrew Garrison,
3
W przypadku repozytoriów hostowanych można używać svn w wersji 1.7 svnrdump, co jest analogiczne jak w svnadmin dumpprzypadku repozytoriów lokalnych. Ten artykuł zawiera przyjemny przewodnik, który zasadniczo sprowadza się do:
Jeśli używasz formatu repozytorium FSFS (domyślny), możesz skopiować samo repozytorium, aby wykonać kopię zapasową. W przypadku starszego systemu BerkleyDB repozytorium nie jest niezależne od platformy i zazwyczaj należy użyć zrzutu svnadmin.
@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%
echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"
svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn
To jest plik wsadowy, który mam uruchomiony, który wykonuje moje kopie zapasowe
To wymaga czasu i mówi, że pobiera dzienniki z repozytorium. Tworzy zestaw plików w środku C:\Documents and Settings\nverma\.svk\local.
Aby zaktualizować to lokalne repozytorium najnowszym zestawem zmian ze zdalnego, wystarczy od czasu do czasu uruchomić poprzednie polecenie.
Teraz możesz grać z lokalnym repozytorium ( /home/user/.svk/localw tym przykładzie) tak, jakby to było normalne repozytorium SVN!
Jedynym problemem związanym z tym podejściem jest to, że lokalne repozytorium jest tworzone z przyrostem wersji przez faktyczną wersję w zdalnym repozytorium. Jak ktoś napisał:
Komenda svk miror generuje zatwierdzenie w właśnie utworzonym repozytorium. Tak więc wszystkie zatwierdzenia utworzone przez kolejną synchronizację będą miały numery wersji zwiększone o jeden w porównaniu do zdalnego publicznego repozytorium.
Ale to było dla mnie OK, ponieważ od czasu do czasu chciałem tylko wykonać kopię zapasową zdalnego repozytorium, nic więcej.
Weryfikacja:
Aby to sprawdzić, użyj klienta SVN z lokalnym repozytorium w następujący sposób:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
To polecenie przechodzi następnie do pobrania najnowszej wersji z lokalnego repozytorium. Na końcu jest napisane Checked out revision N. To Nbyła jedna więcej niż faktyczna wersja znaleziona w zdalnym repozytorium (z powodu wyżej wspomnianego problemu).
Aby sprawdzić, czy svk przyniósł całą historię, uruchomiono kasę SVN z różnymi starszymi wersjami przy użyciu -r2, 10, 50 itd. Następnie <local-dir-path-to-checkout-onto>potwierdzono, że pliki w tej wersji.
Na koniec C:/Documents and Settings\nverma/.svk/local/spakuj katalog i zapisz go gdzieś. Rób to regularnie.
jak powiedzieli inni, hot-backup.py z zespołu Subversion ma kilka fajnych funkcji po prostu svnadmin hotcopy
Uruchamiam zaplanowane zadanie na skrypcie Pythona, który pająki dla wszystkich moich repozytoriów na komputerze, i używa hotbackup do przechowywania hotcopies na kilka dni (paranoja korupcji) i svnadmin svndumpna zdalnej maszynie. Przywrócenie jest naprawdę łatwe - do tej pory.
Odpowiedzi:
Możesz użyć czegoś takiego jak (Linux):
Ponieważ system Windows nie obsługuje GZip, jest to po prostu:
źródło
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
Spowoduje to utworzenie pliku o nazwie „backup.7z”, który zawiera pojedynczy plik „backupname.svn”, który jest wyjściemsvnadmin dump
.for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Używamy hotvopy svnadmin, np .:
Zgodnie z książką :
Możesz oczywiście ZIP (najlepiej 7-Zip) kopię zapasową. IMHO Jest to najprostsza z opcji tworzenia kopii zapasowych: w przypadku katastrofy nie pozostaje nic innego, jak rozpakować ją z powrotem na miejsce.
źródło
Na stronie Subversion dostępny jest skrypt hotbackup.py, który jest całkiem przydatny do automatyzacji tworzenia kopii zapasowych.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
źródło
Oto skrypt Perla, który:
Scenariusz:
Źródło skryptu i więcej szczegółów na temat uzasadnienia dla tego typu kopii zapasowej.
źródło
Używam svnsync , który konfiguruje serwer zdalny jako serwer lustrzany / podrzędny. Dwa tygodnie temu mieliśmy awarię serwera i mogłem dość łatwo przestawić urządzenie podrzędne na pozycję podstawową (wystarczyło zresetować identyfikator UUID w repozytorium urządzeń podrzędnych do oryginalnego).
Kolejną korzyścią jest to, że synchronizacja może być uruchamiana przez pośrednika, a nie jako zadanie na dowolnym serwerze. Mam klienta z dwiema sieciami VPN synchronizującymi repozytorium między nimi.
źródło
svnadmin hotcopy
źródło
svnbackup ponad w Google Code, aplikacji konsolowej .NET.
źródło
Możesz utworzyć kopię zapasową repozytorium ( zrzut ) za pomocą
svnadmin dump
.Następnie możesz go zaimportować za pomocą
svnadmin load
.Szczegółowe informacje w SVNBook: „Migracja danych repozytorium za pomocą svnadmin”
źródło
Zasadniczo można bezpiecznie skopiować folder repozytorium, jeśli serwer SVN zostanie zatrzymany. (źródło: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )
Jeśli więc możesz zatrzymać serwer, zrób to i po prostu skopiuj repozytorium za pomocą jakiegoś skryptu lub narzędzia do tworzenia kopii zapasowych. Cobian Backup pasuje tutaj ładnie, ponieważ może automatycznie zatrzymywać i uruchamiać usługi oraz może tworzyć przyrostowe kopie zapasowe, więc tworzysz kopie zapasowe tylko tych części repozytorium, które niedawno się zmieniły (przydatne, jeśli repozytorium jest duże i tworzysz kopię zapasową w zdalnej lokalizacji ).
Przykład:
Dodaj zadanie kopii zapasowej:
Ustaw źródło na folder repozytorium (np.
C:\Repositories\
),Dodaj zdarzenie poprzedzające tworzenie kopii zapasowej
"STOP_SERVICE"
VisualSVN,Dodaj zdarzenie po utworzeniu kopii zapasowej,
"START_SERVICE"
VisualSVN,Ustaw inne opcje w razie potrzeby. Utworzyliśmy przyrostowe kopie zapasowe, w tym usuwanie starych, harmonogram tworzenia kopii zapasowych, miejsce docelowe, kompresję włącznie. dzielenie archiwów itp.
Zysk!
źródło
istnieją 2 główne metody tworzenia kopii zapasowych serwera svn, pierwszy to hotcopy, które utworzą kopię plików repozytorium, głównym problemem z tym podejściem jest to, że zapisuje dane o bazowym systemie plików, więc możesz mieć pewne trudności z próbą repostore ten rodzaj kopii zapasowej na innym serwerze SVN lub innym komputerze. istnieje inny rodzaj kopii zapasowej zwany zrzutem, ta kopia zapasowa nie zapisuje żadnych informacji na temat bazowego systemu plików i jego możliwości nadawania na dowolnym serwerze SVN opartym na subversion tigiris.org.
o narzędziu do tworzenia kopii zapasowych możesz użyć narzędzia svnadmin (jest w stanie wykonać hotcopy i zrzut) z wiersza polecenia, ta konsola znajduje się w tym samym katalogu, w którym mieszka twój serwer svn, lub możesz znaleźć w Google narzędzia do tworzenia kopii zapasowych svn.
zalecam, aby wykonać oba rodzaje kopii zapasowych i zabrać je z biura na konto e-mail, usługę amazon s3, ftp lub usługi lazurowe, w ten sposób uzyskasz bezpieczną kopię zapasową bez konieczności hostowania serwera svn gdzieś poza Twoje biuro.
źródło
Oto narzędzie GUI dla systemu Windows do zrzucenia lokalnych i zdalnych repozytoriów subversion:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
Opis narzędzia mówi:
To proste narzędzie pozwala na zrobienie kopii zapasowej zrzutu lokalnego i zdalnego repozytorium subversion. Oprogramowanie działa w taki sam sposób jak „svnadmin”, ale nie jest nakładką graficzną. Zamiast tego użyj bezpośrednio bibliotek subversion, aby umożliwić tworzenie zrzutu w trybie autonomicznym bez żadnego dodatkowego narzędzia.
Mam nadzieję, że to pomoże...
źródło
Chciałbym po prostu skopiować cały katalog repo do mojej lokalizacji kopii zapasowej. W ten sposób, jeśli coś się stanie, możesz po prostu skopiować katalog z powrotem i być gotowym do pracy od razu.
W razie potrzeby pamiętaj o zachowaniu uprawnień. Zazwyczaj dotyczy to tylko maszyn z systemem Linux.
źródło
W przypadku repozytoriów hostowanych można używać svn w wersji 1.7
svnrdump
, co jest analogiczne jak wsvnadmin dump
przypadku repozytoriów lokalnych. Ten artykuł zawiera przyjemny przewodnik, który zasadniczo sprowadza się do:Po pobraniu pliku zrzutu możesz go zaimportować lokalnie
lub prześlij go do wybranego hosta.
źródło
Jeśli używasz formatu repozytorium FSFS (domyślny), możesz skopiować samo repozytorium, aby wykonać kopię zapasową. W przypadku starszego systemu BerkleyDB repozytorium nie jest niezależne od platformy i zazwyczaj należy użyć zrzutu svnadmin.
Temat dokumentacji svnbook do tworzenia kopii zapasowych zaleca
svnadmin hotcopy
polecenia, jak to będzie dbać o kwestie jak pliki w użyciu i takie.źródło
To jest plik wsadowy, który mam uruchomiony, który wykonuje moje kopie zapasowe
źródło
Do codziennego i pełnego rozwiązania do tworzenia kopii zapasowych wystarczy użyć tutaj skryptów kopii zapasowych SVN .
źródło
Skompilowałem kroki, które wykonałem, aby wykonać kopię zapasową zdalnego repozytorium SVN mojego projektu.
To wymaga czasu i mówi, że pobiera dzienniki z repozytorium. Tworzy zestaw plików w środku
C:\Documents and Settings\nverma\.svk\local
.Aby zaktualizować to lokalne repozytorium najnowszym zestawem zmian ze zdalnego, wystarczy od czasu do czasu uruchomić poprzednie polecenie.
Teraz możesz grać z lokalnym repozytorium (
/home/user/.svk/local
w tym przykładzie) tak, jakby to było normalne repozytorium SVN!Jedynym problemem związanym z tym podejściem jest to, że lokalne repozytorium jest tworzone z przyrostem wersji przez faktyczną wersję w zdalnym repozytorium. Jak ktoś napisał:
Ale to było dla mnie OK, ponieważ od czasu do czasu chciałem tylko wykonać kopię zapasową zdalnego repozytorium, nic więcej.
Weryfikacja:
Aby to sprawdzić, użyj klienta SVN z lokalnym repozytorium w następujący sposób:
To polecenie przechodzi następnie do pobrania najnowszej wersji z lokalnego repozytorium. Na końcu jest napisane
Checked out revision N
. ToN
była jedna więcej niż faktyczna wersja znaleziona w zdalnym repozytorium (z powodu wyżej wspomnianego problemu).Aby sprawdzić, czy svk przyniósł całą historię, uruchomiono kasę SVN z różnymi starszymi wersjami przy użyciu
-r
2, 10, 50 itd. Następnie<local-dir-path-to-checkout-onto>
potwierdzono, że pliki w tej wersji.Na koniec
C:/Documents and Settings\nverma/.svk/local/
spakuj katalog i zapisz go gdzieś. Rób to regularnie.źródło
jak powiedzieli inni, hot-backup.py z zespołu Subversion ma kilka fajnych funkcji po prostu
svnadmin hotcopy
Uruchamiam zaplanowane zadanie na skrypcie Pythona, który pająki dla wszystkich moich repozytoriów na komputerze, i używa hotbackup do przechowywania hotcopies na kilka dni (paranoja korupcji) i
svnadmin svndump
na zdalnej maszynie. Przywrócenie jest naprawdę łatwe - do tej pory.źródło
1.1 Utwórz zrzut z repozytorium SVN (Subversion)
Prawdziwy przykład
1.2 Zrzut utworzony przez Gzip
Prawdziwy przykład
1.3 Zrzut SVN i Zrzut Gzip z jedną linią
Prawdziwy przykład
Jak wykonać kopię zapasową (zrzut) i przywrócić (załadować) repozytorium SVN (Subversion) w systemie Linux.
Ref: svn subversion backup andrestore
źródło