Przyrostowa kopia zapasowa z 7zip

17

Poszukałem google i szukałem, ale nie mogę znaleźć polecenia, którego narzędzie wiersza polecenia 7zip używa do tworzenia przyrostowych kopii zapasowych. Więc czy ktoś może udostępnić polecenie?

Dzięki

btw Znalazłem ten link: http://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspx . Ale wydaje się, że dotyczy to różnicowych kopii zapasowych, nawet jeśli mówi o przyrostowym.

gyaani_guy
źródło

Odpowiedzi:

11

Powinno być proste, użyj tego, aby utworzyć i stopniowo aktualizować archiwum:

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

Ta strona zawiera informacje na temat opcji aktualizacji.

Są one przetłumaczone w następujący sposób:

  • p0 - Jeśli „Plik istnieje w archiwum, ale nie jest zgodny ze znakiem wieloznacznym”, usuń plik z archiwum.
  • q3- Jeśli „Plik istnieje w archiwum, ale nie istnieje na dysku”, usuń plik z archiwum i usuń go z systemu plików po rozpakowaniu .
  • r2 - Jeśli „Plik nie istnieje w archiwum, ale istnieje na dysku”, spakuj plik do archiwum.
  • x2 - Jeśli „Plik w archiwum jest nowszy niż plik na dysku”, spakuj starszy plik do archiwum.
  • y2 - Jeśli „Plik w archiwum jest starszy niż plik na dysku”, spakuj nowszy plik do archiwum.
  • z1 - Jeśli „Plik w archiwum jest taki sam jak plik na dysku”, użyj ponownie spakowanej wersji pliku.
  • w2 - Jeśli rozmiar pliku jest inny, spakuj zmodyfikowany plik do archiwum.
ArtemGr
źródło
Witaj, co oznacza tyle opcji?
Zhianc
Jest to mapa od stanu pliku do działania. Istnieje siedem możliwych stanów.
ArtemGr
3
To nie jest przyrostowa kopia zapasowa. To polecenie tworzy różnicową kopię zapasową i tworzy nowe archiwum ze zmianami od ostatniej pełnej kopii zapasowej. Przyrostowa kopia zapasowa śledzi zmiany od czasu poprzedniej przyrostowej kopii zapasowej (diff of diff).
stil
Wydaje mi się, że jest to po prostu błędne, ponieważ po prostu aktualizuje archiwum. 7z, aby było prawie tak samo jak tworzenie nowego archiwum, ale jest nieco szybsze, ponieważ będzie ponownie użyte. Poniższa odpowiedź Javiera wydaje się zróżnicowana.
Tuntable,
Gdy archiwum jest duże, a przyrosty małe, „ nieco szybszy ” jest dość znaczny. Brak przepakowywania całego archiwum jest jednym z punktów przyrostowych kopii zapasowych. Nie jest to również różnicowa kopia zapasowa: aktualizujemy główne archiwum i nie przechowujemy różnicy w osobnym archiwum. Jeśli bardziej podobają Ci się inne rozwiązania, możesz je głosować, istnieje więcej niż jeden sposób na skórowanie kota.
ArtemGr,
8

Jeśli chcesz wykonać przyrostową kopię zapasową , musisz dostarczyć 7-zip z listą plików zmodyfikowanych (z -i@fileList), i musisz jakoś opracować taką listę. W kopii lustrzanej archive.org usuniętego pytania Offline incremantal backup za pomocą thumbdrive możesz znaleźć uniksowy wiersz poleceń, używając podpisów md5 do utworzenia fileList.

Operacja aktualizacji 7-zip pozwala na utworzenie dodatkowego archiwum z różnicami (w tym usuniętymi plikami) występującymi od archiwum podstawowego / podstawowego. To jest właściwie nazwana różnicowa kopia zapasowa (jak podano w samym pytaniu).

Znalazłem doskonały artykuł na ten temat w WPCTips „Różnicowe kopie zapasowe z 7-zip” (zarchiwizowane) . Zalecają użycie programu GUI (Toucan) lub skorzystanie z tego przepisu dla wiersza poleceń:

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

To trochę różni się od 7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}proponowanego przez ArtemGr:

  • -u- mówi, że główne archiwum nie powinno być modyfikowane
  • "-up0q3r2x2y2z0w2!{differential.7z}"określa docelowe archiwum różnicowe i czynności, które należy wykonać dla każdego pliku dla każdego warunku / stanu: dodać pliki nowe lub zmodyfikowane w systemie plików, usunąć pliki znajdujące się tylko w archiwum 7zip, zignorować resztę.
    Zauważ, że „!” znak zostanie przechwycony przez, bashchyba że jest cytowany.

Na wypadek, gdybyś był ciekawy specyfiki tego tajemniczego 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. 
Javier
źródło
2
Dziękujemy za odpowiedź Javier i witamy w Super User. Istnieje tutaj zasada podsumowywania łączy na wypadek ich zniknięcia - czy możesz wyjaśnić, w jaki sposób polecenie osiąga przyrostową kopię zapasową? (szczególnie up0q3r2x2y2z0w2część!) Dzięki :-)
bertieb
1
@bertieb dziękuję za radę. Mam nadzieję, że teraz jest bardziej jasne.
Javier
1
@DanielSokolowski Nie jestem pewien, czy to odpowiada na twoje pytanie. Jeśli wykonałeś przyrostową kopię zapasową (A + b + c + d), będziesz musiał wyodrębnić z każdego archiwum w kolejności, w jakiej je utworzyłeś. Jeśli wykonałeś różnicową kopię zapasową (A + (b + c + d)). Musisz wyodrębnić 2 archiwa. Byłoby miło, że ostatnie archiwum zawierało informacje o poprzednich archiwach i kolejności ekstrakcji, więc ekstrakcję można wykonać za pomocą jednego polecenia. Ale nie znam takiej funkcji.
Javier
1
artykuł dzielić nie otwiera @Javier
alper
1
Dzięki @alper. Archive.org ma migawkę artykułu z poradami dotyczącymi WPC pod adresem web.archive.org/web/20160822111118/http://www.wpctips.com:80/… . Chyba będę musiał zmienić odpowiedź.
Javier
4

Możesz łatwo wykonać przyrostową kopię zapasową, zmieniając kierunek w czasie. tzn. zawsze zachowujesz najnowszą kopię zapasową jako pełną kopię i przechowujesz pliki różnicowe w przeszłości.

# 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

Archiwum podstawowe zawsze zawiera najnowszą wersję, a krok po kroku „dekrementacje” umożliwiają odtworzenie starszych wersji. Przy odrobinie skryptu możesz zastosować odpowiednią numerację do plików malejących.

iligid
źródło
Czy możesz uprzejmie to rozwinąć? Chciałbym zobaczyć przykład tworzenia powiedzmy bieżącą kopię zapasową, kopię zapasową 1 dzień temu, kopię zapasową 2 dni temu. A następnie przykład przywracania kopii zapasowej „2 dni temu”.
Daniel Sokołowski
0

W pliku wsadowym z włączonym rozszerzeniem opóźnionym należy zacytować „!” z dwoma takimi ^ ^

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

Zajęło mi to chwilę, aby to zobaczyć.

Tuntable
źródło