bup-split - tek tek dosyaları yedekleme kümelerini kurtarmak için kaydedin
bup split [-t] [-c] [-n name] COMMON_OPTIONS
bup split -b COMMON_OPTIONS
bup split –copy COMMON_OPTIONS
bup split –noop [-t|-b] COMMON_OPTIONS
[-r host:path] [-v] [-q] [-d seconds-since-epoch] [--bench] [--max-pack-size=bytes] [-#] [--bwlimit=bytes] [--max-pack-objects=n] [--fanout=count] [--keep-boundaries] [--git-ids | filenames...]
bup split, verilen dosyaların içeriğini birleştirir (veya dosya adı verilmezse, stdin'den okur), dönen bir sağlama toplamı algoritması kullanarak içeriği yaklaşık 8k'lik parçalara böler ve parçaları bir bup deposuna kaydeder. Daha önce saklanan yığınlar tekrar saklanmazlar (yani 'tekilleştirilirler').
Yuvarlanan sağlama toplamının çalışma şekli nedeniyle parçalar, bayt ekleme, silme ve değiştirme dahil olmak üzere belirli bir dosyada yapılan değişikliklerde çok kararlı olma eğilimindedir.
Örneğin, bir veritabanının XML dökümünü yedeklemek için bup split kullanırsanız ve XML dosyası bir çalıştırmadan diğerine biraz değişirse, neredeyse tüm veriler yinelenenlerden arındırılır ve ilkinden sonraki her yedeğin boyutu tipik olarak oldukça küçük olmak
Başka bir teknik, tar(1) veya cpio(1) programlarının çıktısını bup split'e yönlendirmektir. Tarball'daki tek tek dosyalar biraz değiştiğinde veya eklendiğinde veya kaldırıldığında, bup, tarball'ın geri kalanını verimli bir şekilde işlemeye devam eder. (Bununla birlikte, bup kaydetmenin genellikle bunu gerçekleştirmenin daha verimli bir yolu olduğunu unutmayın.)
Verileri geri almak için bup-join(1) kullanın.
Bu seçenekler, -n en olası seçim olmak üzere, komutun birincil davranışını seçer.
veri kümesini oluşturduktan sonra name adlı bir git dalı oluşturun, böylece bu ad kullanılarak erişilebilir. name zaten varsa, yeni veri kümesinin eski name'in soyundan geldiği kabul edilecektir. (Böylece, sürekli olarak aynı ada sahip yeni veri kümeleri oluşturabilir ve daha sonra zaman içinde nasıl değiştiğini görmek için bu veri kümesinin geçmişini görüntüleyebilirsiniz.) Orijinal veriler aynı zamanda "veri" adlı üst düzey bir dosya olarak da kullanılabilir olacaktır. VFS, bup sigortası, bup ftp vb. yoluyla erişilebilir.
elde edilen veri kümesinin git ağacı kimliğinin çıktısını alın.
elde edilen veri kümesinin git commit kimliğinin çıktısını alın.
veri kümesindeki parçalara karşılık gelen bir dizi git blob kimliği çıktısı alın. -n, -t ve -c ile uyumsuz.
verileri okuyun ve "bupsplit" yuvarlanan sağlama toplamı algoritmasına göre bloklara ayırın, ancak depoda hiçbir şey saklamayın. Veri kümesi için git bloblarını veya ağaç kimliklerini hesaplamak (ancak depolamamak) için -b veya -t ile birleştirilebilir. Bu, çoğunlukla bupsplit algoritmasını kıyaslamak ve doğrulamak için kullanışlıdır. -n ve -c ile uyumsuz.
--noop gibi, ancak verileri stdout'a da yazın. Bu, büyük miktarda veri için okuma+bupsplit+yazma hızını karşılaştırmak için yararlı olabilir. -n, -t, -c ve -b ile uyumsuz.
yedekleme kümesini verilen uzak sunucuya kaydedin. yol atlanırsa, uzak sunucudaki varsayılan yolu kullanır (':' karakterini yine de eklemeniz gerekir). Uzak sunucuya bağlantı SSH ile yapılır. SSH bağlantısı için hangi bağlantı noktası, kullanıcı veya özel anahtarın kullanılacağını belirtmek isterseniz ~/.ssh/config dosyasını kullanmanızı öneririz. Hedef uzak olsa bile, yerel bir bup deposu hala gereklidir.
taahhütte yazılı tarihi belirtin (1970-01-01'den bu yana saniye).
ilerleme mesajlarını devre dışı bırakın.
ayrıntıyı artırın (birden fazla kullanılabilir).
stdin, ham veriler yerine git nesne kimliklerinin bir listesidir. bup split, adlandırılmış her bir git nesnesinin içeriğini okuyacak (eğer bup deposunda varsa) ve onu bölecektir. Bu, bunun yerine bup tarzı hashsplitting kullanmak için büyük ikili dosyalara sahip bir git deposunu dönüştürmek için yararlı olabilir. Bu seçenek muhtemelen en çok --keep-boundaries ile birleştirildiğinde kullanışlıdır.
komut satırında birden fazla dosya adı verilirse, bunlar normalde içeriğin tümü tek bir dosyadan geliyormuş gibi birleştirilir. Yani, üretilen damlalar/ağaçlar kümesi, tek bir girdi dosyası olsaydı olacağıyla aynıdır. Ancak, --keep-boundaries kullanırsanız, her dosya ayrı ayrı bölünür. Yine de yalnızca tek bir ağaç veya taahhüt veya bir dizi blob alırsınız, ancak her blob dosyalardan yalnızca birinden gelir; girdi dosyalarından birinin sonu her zaman bir blobu sonlandırır.
kıyaslama zamanlamalarını stderr'e yazdırın.
asla verilen bayt sayısından daha büyük git paketi dosyaları oluşturmayın. Varsayılan 1 milyar bayttır. Genellikle bunu değiştirmek için bir neden yoktur.
asla verilen sayıda nesne içeren git packfiles oluşturmayın. Varsayılan 200 bin nesnedir. Genellikle bunu değiştirmek için bir neden yoktur.
çok büyük dosyaları bölerken, ağaçlardaki öğe sayısını ortalama numobjs olarak tutmaya çalışın.
sunucuya saniyede bayt/sn bayttan fazlasını iletmeyin. Bu, yedeklemelerinizin tüm ağ bant genişliğinizi emmemesi için iyidir. Sırasıyla 1024, 1024*1024, 1024*1024*1024'ün katlarını belirtmek için k, M veya G gibi bir sonek kullanın.
sıkıştırma seviyesini # olarak ayarlayın (0-9 arasında bir değer, burada 9 en yüksek ve 0 sıkıştırma yok). Varsayılan 1'dir (hızlı, gevşek sıkıştırma)
$ tar -cf - /etc | bup split -r myserver: -n mybackup-tar
tar: Removing leading /' from member names
Indexing objects: 100% (196/196), done.
$ bup join -r myserver: mybackup-tar | tar -tf - | wc -l
1961bup-join(1), bup-index(1), bup-save(1), bup-on(1), ssh_config(5)
bup(1) paketinin bir parçası.
Avery Pennarun