Domanda

Potreste dirmi come comprimere i file specificati nello stesso file Zip. Lasciami dire come sono riempite le mie cartelle:

  • Uno scheduler ha i backup dei miei database e li salva quotidianamente in un file. Crea 4 backup del database ogni giorno, il che significa che ci saranno altri 4 file al giorno. Quindi ho bisogno di comprimere i backup appena creati nello stesso file zip (ovviamente differisce dal file zip del giorno precedente, il file zip verrà creato per quel giorno per i file di backup appena creati) e devo farlo automaticamente. Bene, so come renderlo automatico. Posso utilizzare l'utilità di pianificazione di Windows per automatizzare le cose.

Grazie.

È stato utile?

Soluzione

Puoi farlo con DotNetZip - originariamente prodotto come una libreria per l'uso da parte dei programmatori ma l'esempio le app costruite e spedite con la libreria sono diventate molto utili a pieno titolo.

Uno dei " samples " si chiama zipit.exe - uno strumento console. Specificare un file zip inesistente per crearne uno nuovo o specificare un file zip esistente per aggiornarlo.

zipit.exe ZipArchive.zip  c:\data\folder1

È possibile specificare uno o più nomi di file, directory o un'espressione logica che descriva quali file includere. Per le espressioni:

  • name = *.jpg
    qualsiasi file .jpg.

  • mtime > 07/01/2009
    qualsiasi file con ora dell'ultima modifica dopo la mezzanotte del 1 ° luglio 2009. C'è anche ctime e atime per l'ora di creazione e l'ora di accesso.

  • ctime > 07/01/2009:07:53:00
    qualsiasi file con ora di creazione dopo le 7:53 del 1 ° luglio 2009.

  • size > 320mb
    qualsiasi file con dimensioni superiori a 320mb. Puoi anche usare kb o gb . O omettere i caratteri per una dimensione in byte. E puoi usare & Lt; o = come operazioni.

  • attr != H
    qualsiasi file che non ha impostato l'attributo nascosto. Altri attributi includono S = sistema, R = sola lettura, A = archivio. Ovviamente puoi provare anche che l'attributo è ON (usando = invece di! =).

  • attr != H and size > 320mb
    includere i file che soddisfano entrambe le condizioni. Puoi anche usare OR come congiunzione. Usa le parentesi per raggruppare espressioni complesse.

  • name = *.jpg or name = *.gif
    includere i file che soddisfano l'una o l'altra condizione.

  • (name = *.jpg) or (name = *.gif)
    come sopra.

  • (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    qualsiasi file modificato il 1 luglio. Da mezzanotte a mezzanotte.

  • (name = *.jpg) AND (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    qualsiasi file .jpg modificato il 1 luglio.

  • (name = *.jpg) and (size >= 100kb) and (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    qualsiasi file .jpg, di dimensioni pari o superiori a 100kb, modificato il 1 ° luglio.

Con altre opzioni sullo strumento zipit.exe, puoi anche:

  • specifica se vuoi attraversare punti di analisi (come collegamenti simbolici o giunzioni, ad esempio " My Music ").
  • elenca le directory o meno (il valore predefinito NON è)
  • crittografa lo zip con AES o con " normale " crittografia zip
  • specifica una dimensione del segmento per produrre un file zip con spanning o segmentato.
  • produce un archivio autoestraente

Esempi:

zipit.exe Archive.zip -D c:\project1 -r+ "(name = *.xlsx) and (mtime >= 07/01/2009) and (mtime < 07/31/2009)"

  • Produci un file, Archive.zip, che contiene tutti i file .xslx nella gerarchia di directory c: \ project1, che sono stati modificati a luglio.

zipit.exe Unpack.exe -sfx w -D project2 -r+ "(name = *.pdf) and (size > 100kb)"

  • Produce un exe GUI autoestraente, denominato Unpack.exe, che contiene tutti i file .pdf nella gerarchia di directory project2, che hanno dimensioni maggiori di 100k.

DotNetZip è gratuito.

Tutte queste funzionalità sono disponibili anche nell'interfaccia .NET della libreria. E c'è anche uno strumento GUI.

Altri suggerimenti

Uso il programma open source 7Zip con una riga di comando come:

"C:\Program Files\7-Zip\7z.exe" a My.zip MyFileOrFolder

Se si utilizza una partizione NTFS, potrebbe anche risolvere il problema in modo che Windows comprima automaticamente la cartella in cui si trovano i file di backup (fare clic con il pulsante destro del mouse sulla cartella, selezionare Proprietà, Avanzate e fare clic su Comprimi contenuto per proteggere i dati) .

Ho abbandonato WinZip a favore di 7-Zip perché è veloce, gratuito, efficiente e disponibile per Windows e Linux.

Se sei un fan di WinZip, dai un'occhiata al componente aggiuntivo di supporto della riga di comando di WinZip: http : //winzip.com/prodpagecl.htm

Puoi archiviare tutti i file o le directory consentiti dalla tua riga di comando di Windows:

wzzip archive.zip dir1 dir2 dir3 ...

Puoi scaricare GNU zip per Windows all'indirizzo http://gnuwin32.sourceforge.net/packages /zip.htm . Se si desidera ottenere l'intero percorso della riga di comando UNIX, zip è disponibile con http://www.cygwin.com/ .

La pagina man fornisce questo esempio che sembra risolvere il tuo problema, ci sono anche molte altre opzioni da riga di comando:

Ad esempio, se foo.zip esiste e contiene foo / file1 e    pippo / file2 e la directory pippo contiene i file pippo / file1 e pippo / file3, quindi:

      zip -r foo.zip foo

o più concisamente

      zip -r foo foo

sostituirà foo / file1 in foo.zip e aggiungerà foo / file3 a foo.zip. Dopodichè,    foo.zip contiene foo / file1, foo / file2 e foo / file3, con foo / file2 invariato da    prima.

Cerca in un vecchio programma chiamato PKZIP. Credo che puoi farlo anche con WinZip e 7Zip.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top