Backup incrementale con 7zip


17

Ho cercato su Google e cercato, ma non riesco a trovare il comando utilizzato dall'utilità della riga di comando 7zip per eseguire backup incrementali. Quindi qualcuno può condividere il comando?

Grazie

tra l'altro ho trovato questo link: http://wmug.co.uk/wmug/b/sean/archive/2009/03/20/powershell-amp-7zip-incremental-backup-solution.aspx . Ma sembra essere per i backup differenziali, anche se dice incrementale.

Risposte:


11

Dovrebbe essere semplice, utilizzare questo per creare e aggiornare in modo incrementale l'archivio:

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

Questa pagina offre un riferimento per le opzioni di aggiornamento.

Sono tradotti come segue:

  • p0 - Se "Il file esiste nell'archivio, ma non corrisponde al carattere jolly", rimuovere il file dall'archivio.
  • q3- Se "Il file esiste nell'archivio, ma non esiste sul disco", rimuovere il file dall'archivio e rimuoverlo dal file system al momento dell'estrazione .
  • r2 - Se "Il file non esiste nell'archivio, ma esiste sul disco", comprimere il file nell'archivio.
  • x2 - Se "Il file nell'archivio è più recente del file sul disco", comprimere il file precedente nell'archivio.
  • y2 - Se "Il file nell'archivio è più vecchio del file sul disco", impacchetta il file più recente nell'archivio.
  • z1 - Se "Il file nell'archivio è uguale al file sul disco", riutilizzare la versione compressa del file.
  • w2 - Se la dimensione del file è diversa, comprimere il file modificato nell'archivio.

Ciao, cosa significano queste tante opzioni?
Zhianc,

È una mappa da uno stato di file a un'azione. Esistono sette stati possibili.
ArtemGr,

3
Non è un backup incrementale. Questo comando esegue un backup differenziale e crea un nuovo archivio con modifiche dall'ultimo backup completo. Il backup incrementale tiene traccia delle modifiche rispetto al backup incrementale precedente (diff. Diff.).
stil

Penso che sia assolutamente sbagliato, in quanto aggiorna l'archivio.7z per essere quasi uguale alla creazione di un nuovo archivio, ma un po 'più veloce in quanto verrà riutilizzato. La risposta di Javier qui sotto sembra essere un differenziale.
Montabile il

Quando l'archivio è grande e gli incrementi sono piccoli, il " bit più veloce " è piuttosto sostanziale. Non reimballare l'intero archivio è uno dei punti dei backup incrementali. Inoltre, questo non è un backup differenziale: stiamo aggiornando l'archivio principale e non memorizziamo la differenza in un archivio separato. Se ti piacciono di più le altre soluzioni, sentiti libero di votarle, c'è più di un modo per scuoiare un gatto.
ArtemGr,

8

Se si dovesse eseguire un backup incrementale , sarebbe necessario fornire a 7-zip l'elenco dei file modificati (con -i@fileList) e sarebbe necessario elaborare tale elenco in qualche modo. Nel mirror di.org.org della domanda rimossa Backup incremantale offline tramite thumbdrive è possibile trovare una riga di comando Unix che utilizza le firme md5 per creare la FileList.

L'operazione di aggiornamento a 7 zip consente di creare un archivio secondario con le differenze (inclusi i file eliminati) che si verificano dall'archivio di base / primario. Questo è correttamente chiamato backup differenziale (come indicato nella domanda stessa).

Ho trovato un eccellente articolo su questo argomento in WPCTips "Backup differenziali con 7-zip" (archiviato) . Si consiglia di utilizzare un programma GUI (Toucan) o utilizzare questa ricetta per la riga di comando:

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

Questo è un po 'diverso da quello 7zr u -up0q3r2x2y2z1w2 {archive}.7z {path}proposto da ArtemGr:

  • -u- dice che l'archivio principale non deve essere modificato
  • "-up0q3r2x2y2z0w2!{differential.7z}"specifica l'archivio differenziale di destinazione e quale azione fare per ciascun file per ogni condizione / stato: aggiungere file nuovi o modificati nel filesystem, rimuovere file che si trovano solo nell'archivio 7zip, ignorare il resto.
    Si noti che il "!" il personaggio verrà intercettato da bashmeno che non sia citato.

Nel caso in cui tu sia curioso di conoscere i dettagli di quel criptico 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
Grazie per la risposta Javier e benvenuto in Super User. Esiste una politica qui di riepilogo dei collegamenti nel caso in cui scompaiano, potresti spiegare come il comando ottiene il backup incrementale? (in particolare la up0q3r2x2y2z0w2parte!) Grazie :-)
bertieb

1
@bertieb grazie per il consiglio. Spero sia più chiaro ora.
Javier,

1
@DanielSokolowski Non sono sicuro che questo risponda alla tua domanda. Se hai eseguito un backup incrementale (A + b + c + d), dovrai estrarre da ciascun archivio nell'ordine in cui sono stati creati. Se hai eseguito un backup differenziale (A + (b + c + d)). Sono 2 gli archivi che devi estrarre. Sarebbe bello che l'ultimo archivio contenesse informazioni sugli archivi precedenti e sull'ordine di estrazione, quindi l'estrazione potrebbe essere fatta con un solo comando. Ma non sono a conoscenza di tale caratteristica.
Javier,

1
articolo si condivide non @Javier si apre
Alper

1
Grazie @alper. Archive.org ha alcune istantanee dell'articolo di WPC Tips su Web.archive.org/web/20160822111118/http://www.wpctips.com:80/… . Immagino che dovrò modificare la risposta.
Javier

4

È possibile eseguire facilmente un backup incrementale modificando la direzione nel tempo. cioè mantieni sempre l'ultimo backup come copia completa e mantieni i file differenziali nel passato.

# 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

L'archivio di base contiene sempre la versione più recente e applicando "decrementi" passo dopo passo è possibile ricreare versioni precedenti. Con un po 'di scripting puoi applicare la giusta numerazione ai file decrementali.


Puoi gentilmente approfondire questo? Mi piacerebbe vedere un esempio di creazione di dire un backup corrente, backup 1 giorno fa, backup 2 giorni fa. E poi un esempio di ripristino del backup "2 giorni fa".
Daniel Sokolowski il

0

In un file batch, con enabledelayedexpansion, devi citare "!" con due ^^ come questo

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

Mi ci è voluto un po 'per vederlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.