Soru Subversion yedeklemelerini yapmanın en iyi yolu nedir?


Subversion yedeklerini (Debian tabanlı bir sunucuda) yapmanın en iyi yolu nedir?

Svnadmin kullanmak mı?

svnadmin dump /path/to/reponame > reponame.dump

Ya da sadece depoların bulunduğu yerdeki katranı mı?

tar -cvzf svn.backup.tar.gz /var/subversion/

Yukarıdakilerin artıları ve eksileri nelerdir?

Teşekkürler Johan


Güncelleştirme: Bu sadece bir avuç repos ile küçük bir sunucudur. Bu nedenle artımlı yedeklemeler muhtemelen gerekli değildir. Basit tutmaya odaklanmak daha iyi olduğunu düşünüyorum.

Güncelleştirme: Ben tam bir yedekleme yapmak ve daha sonra başka bir temiz bilgisayarda tam bir kurtarma yapmak için paket sarmalayıcı komut dosyası (svn-hot-backup için bir sarıcı oldu) kullandım. Ancak, "SVN_HOTBACKUP_NUM_BACKUPS = 10" bölümünü kaldırdım çünkü benim için çalışmıyordu.

Lütfen bunun basit bir şey olduğunu ve sonucun sadece katranın çok yakınında olduğunu hissediyorum. Ama Manni svn-hot-backup / "svnadmin hotcopy" kullanmak için burada işaret ettiği gibi, daha güvenilir bir yöntemdir zira şanssızsanız, katran zaman zaman bozuk yedekler oluşturabilir.


10
2017-08-10 13:32


Menşei




Cevaplar:


Svn-hot-backup komut dosyasını bulun. Subversion ile gönderilmeli ve istediğinizi yapmak için tüm mantığı, ayrıca eski yedeklemelerin otomatik olarak yuvarlanmasını içermelidir. Svn-hot-backup kullanan bir sarmalayıcı komut dosyası yazdım, bir gece cronjob olarak birden fazla depo ile tek bir sunucuyu yedeklemek için genelleştirilmiş biraz değiştirildi.

#!/bin/bash

#
# Dumps the svn repos to a file and backs it up
# to a local directory.

#Keeps the last 10 revisions
REPODIR="/var/repos"
BAKDIR="/data/backup/svn"
PROG="/usr/local/sbin/svn-hot-backup"
REPOLIST='repo1 repo2 repo3'

if [ ! -x "${PROG}" ]
then
        echo "svnbak: Could not execute \`${PROG}\`"
        exit 1
fi

for repo in ${REPOLIST}
do
    # Dump the database to a backup file
    echo "svnbak: Dumping subversion repository:  ${repo}"
    SVN_HOTBACKUP_NUM_BACKUPS=10 nice ${PROG} --archive-type=gz ${REPODIR}/${repo} ${BAKDIR}/${repo} &> /tmp/svnbak.$$

    if [ "$?" -eq "1" ]
    then
        echo "svnbak: Hot backup on '${repo}' failed with message:"
        /bin/cat /tmp/svnbak.$$
    fi

    /bin/rm /tmp/svnbak.$$
done

exit 0

11
2017-08-10 13:48



Ve bu svnadmin hotcopy için bir sarmalayıcı olduğundan, kurtarma için sanırım sadece / var / subversion / repos / altındaki dosyaları kopyalamak için? Başka bir şey yapmam gerekiyor mu? - Johan
'svnadmin doğrula' da, kopyaladığınız deponun gerçekten geçerli olup olmadığını doğrulamak için betiğe de iyi bir ek olacaktır. - Andrioid
@Johan - evet, sadece kopyala. "Sonuçta meydana gelen yedek, tam olarak işlevsel bir Subversion deposu, canlı bir deponuzun yerine geçecek şekilde düşürülmüş olabilir. itibaren svnbook.red-bean.com/nightly/en/... - Jonik
Ayrıca, önceki N günlerinde yalnızca değiştirilmiş olan depoları bulmak için find komutunu da kullanabilirsiniz. Bul komutunun çıktısında 'db / current' araması yapın. Bu, REPOLIST değişkenini sürekli güncellemeniz gerekmediği avantajına sahiptir. Ayrıca, SVN 1.8'de, artık boş bir hedefe kopyalanmaya ihtiyacınız olmayacak, ancak önceki bir yazılıma ekleyebileceksiniz. Bu, büyük olasılıkla 2-3 kopya büyüklüğünde hotcopy yedeklemelerini hızlandıracaktır. - tgharold


Gördün mü belgeleme bu konuda?

Temel olarak iki seçeneğiniz var:

  1. Kullanarak artan yedeklemeler gerçekleştirin svnadmin dump
  2. Tüm deponuzu kullanarak yedekleyin. svnadmin hotcopy

Sadece dizinin bir kopyasını yapmak değil bir seçenek kopya depolanırken deponuz değişebilir.

Artımlı veya tam yedeklemeleriniz ister paranoya miktarınıza, deponuzun büyüklüğüne, ihtiyaçlarınıza ve altyapınıza bağlıdır.


9
2017-08-10 13:42





Tavsiye ediyorum SVNBackup yapabildiğinden dolayı artımlı yedeklemeler.

Bu neden önemli? Büyük bir geliştirme ekibiniz varsa ve günlük bir Subversion yedeğiniz varsa ve sisteminiz eski yedeklemeye 12 saatte başarısız olursa, tüm günkü çalışma kaybedilir.

Eğer tam yedekleme yaparsanız SVN hotcopy günde birkaç kez deponuza gereksiz yükler yüklüyorsunuz, bu da sabırsız geliştiricileri rahatsız edecektir.

Bir bonus olarak; Ayrıca tavsiye ederim Yedekleme-PC Yedekleme çözümü olarak. Artımlı uzaktan yedeklemeler yapabilir ve farklı sistemlerde aynı dosyaları yedekliyorsanız çok fazla yer tasarrufu sağlayabilir.


4
2017-08-10 21:43





Svnsync'i, eski kopyalarla (gün, hafta, ay) yedeklenen, salt okunur bir depoya yedeklemek için kullanıyorum


4
2017-10-10 04:40



svnbook.red-bean.com/en/1.5/... - Johan
Kılavuzdan "Ve bunu yapmanın birkaç yolu varken, onun ana gücü uzaktan çalışabilmesidir". - Johan
Svnsync'den sözetmek için +1 dump ve hotcopy kesinlikle kullanımları vardır. Yerel artımlı yedeklemeler için de oldukça kullanışlı olabilir. - Jonik
Yedekleme sunucusu farklı bir konumdaysa, tek bir adımda birçok kurtarma vakasını çözersiniz - Zac Thompson
Eğer svnsync rotasına gidecekseniz iki şey: 1) Eğer bir svnadmin hotcopy ile büyük bir repo başlarsanız, çok daha hızlıdır ve / db / revs ötesindeki verileri yedekler 2) svnsync çağrısını kaynak repo'ya ekleyin post-commit kanca böylece ayna her zaman günceldir. (Fakat aynadaki kancalardan uzak dursun, böylece ayna kendini aynalamaya çalışmıyor!) - Robert Calhoun


Artımlı yedeklemeyi yapabilirsiniz. svnadmin eğer istersen, koşmalısın hot-backup.py tar arşivinizi yapmadan önce.

İşte bir makale svn depolarını yedekleme hakkında. Neyse, okumak SVN kitabı daha önce söylendiği gibi iyi bir başlangıç ​​noktasıdır.


2
2017-08-10 13:44





Ben düz eski rsync ile birkaç 100GB + svn depoları yedeklerim. svnadmin dump ve svnadmin hotcopy bu depolarda günler alacaktı.

İzlenecek bir şey daha svnadmin dump kilitleri ve kanca komut dosyalarını yedeklemez.


0
2018-01-29 23:27





İşte depolarım ile yaptığım şey: Dropbox gibi bir klasör yedekleme hizmeti kullan ( Linux sürümlerine bağlantı). Dropbox'ı deponuzun kökeni (veya hatta üstünde) yaparsınız ve bir dosya her değiştiğinde yedeklenir. Sadece bilgisayarlar arasında kullanılabilir olmayacak, aynı zamanda çevrimiçi olarak erişebilecek ve sürümlerine sahip olacaksınız.

Birçok çevrimiçi yedekleme servisi vardır - çoğu 2 GB'a kadar ücretsizdir.


-1
2017-08-10 14:04



Bu küçük kişisel depolar için iyidir, ancak posterin aradığı “en iyi yol” değildir. Bir problem, birden fazla geliştiricinin eşzamanlı erişimle tutarlılığını garanti edemezsiniz. Bir yedeklemenin birincil hedefleri, çevrimiçi erişim ve sürümler yerine güvenilirlik ve tutarlılık olmalıdır. - Martijn Heemels