7zip ile artımlı yedekleme


17

Google'da aradım ve aradım, ancak 7zip komut satırı yardımcı programının artımlı yedeklemeler yapmak için kullandığı komutu bulamıyorum. Birisi lütfen komutu paylaşabilir mi?

Teşekkürler

btw Bu bağlantıyı buldum: http://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspx . Ancak, artımlı yazsa bile, diferansiyel yedeklemeler için görünüyor.

Yanıtlar:


11

Basit olmalı, arşivi oluşturmak ve aşamalı olarak güncellemek için bunu kullanın:

7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}

Bu sayfa güncelleme seçenekleri için bir referans sunmaktadır.

Bunlar şu şekilde çevrilmiştir:

  • p0 - "Dosya arşivde var ancak joker karakterle eşleşmiyorsa" dosyayı arşivden kaldırın.
  • q3- "Dosya arşivde var, ancak diskte yok" ise, dosyayı arşivden kaldırın ve çıkarıldıktan sonra dosya sisteminden kaldırın .
  • r2 - "Dosya arşivde mevcut değil, diskte mevcutsa" dosyayı arşive paketleyin.
  • x2 - "Arşivdeki dosya diskteki dosyadan daha yeni" ise, eski dosyayı arşive yerleştirin.
  • y2 - "Arşivdeki dosya diskteki dosyadan daha eskiyse", daha yeni dosyayı arşive paketleyin.
  • z1 - "Arşivdeki dosya diskteki dosyayla aynıysa", dosyanın paketli sürümünü yeniden kullanın.
  • w2 - Dosya boyutu farklıysa değiştirilen dosyayı arşive yerleştirin.

Merhaba, bu birçok seçenek ne anlama geliyor?
Zhianc

Bir dosya durumundan bir eyleme eşlemedir. Yedi olası durum vardır.
ArtemGr

3
Bu artımlı bir yedekleme değildir. Bu komut, diferansiyel yedekleme yapar ve son tam yedeklemeden bu yana değişikliklerle yeni arşiv oluşturur. Artımlı yedekleme, önceki artımlı yedeklemeden bu yana değişiklikleri izler (fark farkı).
stil

Bence bu sadece yanlış bir arşivdir, çünkü sadece arşivi günceller. 7z sadece yeni bir arşiv oluşturmakla neredeyse aynıdır, ancak yeniden kullanacağı kadar hızlıdır. Javier'in aşağıdaki cevabı bir diferansiyel gibi görünüyor.
Ayarlanabilir

Arşiv büyük ve artışlar küçük olduğunda " bit daha hızlı " oldukça önemlidir. Tüm arşivi yeniden paketlememek, artımlı yedeklemelerin noktalarından biridir. Ayrıca, bu farklı bir yedekleme değildir: ana arşivi güncelliyoruz ve farkı ayrı bir arşivde saklamıyoruz. Diğer çözümleri daha çok seviyorsanız, onları oylamaktan çekinmeyin, bir kedinin derisini atmanın birden fazla yolu vardır.
ArtemGr

8

Artımlı bir yedekleme yapacak olsaydınız, değiştirilen dosyaların listesini içeren 7-zip sağlamanız -i@fileListve böyle bir şekilde bir şekilde detaylandırmanız gerekir. Kaldırılan sorunun thumbdrive aracılığıyla Çevrimdışı artımlı yedeklemenin archive.org aynasında, fileList'i oluşturmak için md5 imzalarını kullanarak bir Unix komut satırı bulabilirsiniz.

7 zipli güncelleme işlemi, temel / birincil arşivden bu yana meydana gelen farklılıklar (silinmiş dosyalar dahil) ile ikincil bir arşiv oluşturulmasına izin verir. Buna doğru şekilde diferansiyel yedekleme adı verilir (sorunun kendisinde belirtildiği gibi).

Bu konuda mükemmel bir makale buldum WPCTips "7-zip ile Diferansiyel Yedeklemeler" (arşivlenmiş) . Bir GUI programı (Toucan) kullanmanızı veya komut satırı için bu tarifi kullanmanızı önerirler:

7z u {base archive.7z} -u- -"up0q3r2x2y2z0w2!{differential.7z}" {folder to archive}

Bu 7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}ArtemGr tarafından önerilenlerden biraz farklı :

  • -u- ana arşivde değişiklik yapılmaması gerektiğini söyler
  • "-up0q3r2x2y2z0w2!{differential.7z}"hedef diferansiyel arşivi ve her koşul / durum için her dosya için hangi eylemin yapılacağını belirtir: dosya sisteminde yeni veya değiştirilmiş dosyalar ekleyin, yalnızca 7zip arşivinde bulunan dosyaları kaldırın, geri kalanını yok sayın.
    Dikkat edin "!" karakter bash, alıntı yapılmadığı sürece tarafından kesilir.

Bu şifrenin özelliklerini merak ediyorsanız p0q3r2x2y2z0w2

<state> | State condition
p | File exists in archive, but is not matched with wildcard.   Exists, but is   not matched 
q | File exists in archive, but doesn't exist on disk.
r | File doesn't exist in archive, but exists on disk.
x | File in archive is newer than the file on disk.
y | File in archive is older than the file on disk.
z | File in archive is same as the file on disk
w | Can not be detected what file is newer (times are the same, sizes are different)

<action> | Description 
0 | Ignore file (don't create item in new archive for this file) 
1 | Copy file (copy from old archive to new) 
2 | Compress (compress file from disk to new archive) 
3 | Create Anti-item (item that will delete file or directory during extracting). This feature is supported only in 7z format. 

2
Cevap Javier için teşekkürler ve Süper Kullanıcı hoş geldiniz. Burada, kaybolmaları durumunda bağlantıları özetleme politikası vardır - komutun artımlı yedeklemeyi nasıl başardığını açıklayabilir misiniz? (özellikle up0q3r2x2y2z0w2bölüm!) Teşekkürler :-)
bertieb

1
@bertieb tavsiye için teşekkür ederim. Umarım şimdi daha açıktır.
Javier

1
@DanielSokolowski Bunun sorunuza cevap verip vermediğinden emin değilim. Artımlı bir yedekleme yaptıysanız (A + b + c + d), her arşivden bunları yaptığınız sırayla çıkarmanız gerekir. Farklı bir yedekleme yaptıysanız (A + (b + c + d)). Çıkarmanız gereken 2 arşivdir. Son arşivin önceki arşivler ve çıkarma sırası hakkında bilgi içermesi hoş olurdu, bu nedenle çıkarma tek bir komutla yapılabilir. Ama böyle bir özelliğin farkında değilim.
Javier

1
Paylaştığınız makale @Javier
alper

1
Teşekkürler @alper. Archive.org, web.archive.org/web/20160822111118/http://www.wpctips.com:80/… adresindeki WPC İpuçları uzantısı makalesinin bir anlık görüntüsüne sahiptir . Sanırım cevabı değiştirmem gerekecek.
Javier

4

Zaman içindeki yönü değiştirerek artımlı yedekleme yapabilirsiniz. yani her zaman en son yedeklemeyi tam kopya olarak saklar ve farklı dosyaları geçmişte tutarsınız.

# create the difference step into the past
7z u {base archive.7z} {folder to archive} -mx=9 -u- -up1q1r3x1y1z0w1!{decrement.7z}

# update the Archive to the latest files
7z u {base archive.7z} {folder to archive} -mx=9 -up0q0x2

Temel Arşiv her zaman en son sürümü içerir ve adım adım "azalmaları" uygulayarak eski Sürümleri yeniden oluşturabilirsiniz. Biraz komut dosyası kullanarak, adım adım dosyalara doğru numaralandırmayı uygulayabilirsiniz.


Lütfen bunu biraz açıklayabilir misiniz? Mevcut bir yedek, 1 gün önce yedek, 2 gün önce yedek oluşturmanın bir örneğini görmek isterim. Ve sonra '2 gün önce' yedeklemesini geri yükleme örneği.
Daniel Sokolowski

0

Toplu iş dosyasında, enableledelayedexpansion ile, "!" böyle iki ^^ ile

7z u {existing archive.7z} -u- -up0q3r2x2y2z0w2^^!{new differential.7z} {folder or files to archive}

Bunu görmek için biraz zamanımı aldı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.