Comment compresser les dossiers spécifiés avec la ligne de commande

Pourriez-vous me dire comment compresser les fichiers spécifiés dans le même fichier Zip. Permettez-moi de dire comment mes dossiers sont remplis:

  • Un planificateur de tâches dispose de sauvegardes de mes bases de données et les enregistre quotidiennement dans un fichier. Il crée 4 sauvegardes quotidiennes de la firebase database, ce qui signifie qu’il y aura 4 fichiers de plus par jour. Donc, je dois compresser les sauvegardes nouvellement créées dans le même fichier zip (bien sûr, il diffère du fichier zip du jour précédent, le fichier zip sera créé pour ce jour pour les fichiers de sauvegarde nouvellement créés) et je dois le faire automatiquement. Eh bien, je sais comment le rendre automatique. Je peux utiliser le planificateur de tâches Windows pour automatiser les choses.

Merci.

Vous pouvez le faire avec DotNetZip – il a été à l’origine produit en tant que bibliothèque pour être utilisé par les programmeurs, mais les exemples d’applications intégrés et livrés avec la bibliothèque sont devenus très utiles.

L’un des “exemples” s’appelle zipit.exe – un outil de console. Indiquez un fichier zip inexistant pour en créer un nouveau ou spécifiez un fichier zip existant pour le mettre à jour.

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

Vous pouvez spécifier un ou plusieurs noms de fichiers, répertoires ou une expression logique décrivant les fichiers à inclure. Pour les expressions:

  • name = *.jpg
    tout fichier .jpg.

  • mtime > 07/01/2009
    tout fichier avec une heure de dernière modification après minuit le 1er juillet 2009. Il y a aussi ctime et atime pour l’heure de création et l’heure d’access.

  • ctime > 07/01/2009:07:53:00
    tout fichier dont l’ heure est créée après 7h53 le 1er juillet 2009.

  • size > 320mb
    tout fichier d’une taille supérieure à 320 Mo. Vous pouvez aussi utiliser kb ou gb . Ou omettez les caractères pour une taille en octets. Et vous pouvez utiliser

  • attr != H
    tout fichier pour lequel l’atsortingbut Masqué n’est pas défini. Les autres atsortingbuts incluent S = system, R = Readonly, A = Archive. Bien sûr, vous pouvez tester que l’atsortingbut est également activé (en utilisant = au lieu de! =).

  • attr != H and size > 320mb
    inclure les fichiers qui répondent aux deux conditions. Vous pouvez également utiliser OU comme conjonction. Utilisez parens pour regrouper des expressions complexes.

  • name = *.jpg or name = *.gif
    inclure les fichiers qui satisfont l’une ou l’autre condition.

  • (name = *.jpg) or (name = *.gif)
    comme ci-dessus.

  • (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    tout fichier modifié le 1er juillet. De minuit à minuit.

  • (name = *.jpg) AND (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    tout fichier .jpg modifié le 1er juillet.

  • (name = *.jpg) and (size >= 100kb) and (mtime >= 07/01/2009) and (mtime < 07/02/2009)
    tout fichier .jpg, de 100 Ko ou plus, modifié le 1er juillet.

Avec d'autres options sur l'outil zipit.exe, vous pouvez également:

  • Indiquez si vous souhaitez parcourir les points d'parsing (comme les liens symboliques ou les jonctions, par exemple "Ma musique").
  • récursivité des répertoires ou non (par défaut NON)
  • crypter le zip avec AES ou avec un cryptage zip "normal"
  • spécifiez une taille de segment pour produire un fichier zip fractionné ou segmenté.
  • produire une archive auto-extractible

Exemples:

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

  • Produisez un fichier, Archive.zip, qui contient tous les fichiers .xslx de la hiérarchie de répertoires c: \ project1, modifiés en juillet.

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

  • Produire un exe GUI à extraction automatique, nommé Unpack.exe, qui contient tous les fichiers .pdf de la hiérarchie de répertoires project2, dont la taille est supérieure à 100 000.

DotNetZip est gratuit.

Toutes ces fonctionnalités sont également disponibles dans l'interface .NET de la bibliothèque. Et il y a aussi un outil graphique.

J’utilise le programme open source 7Zip avec une ligne de commande comme:

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

Si vous utilisez une partition NTFS, cela peut également résoudre votre problème pour que Windows compresse automatiquement le dossier dans lequel se trouvent vos fichiers de sauvegarde (cliquez avec le bouton droit sur votre dossier, sélectionnez Propriétés, Avancé et cliquez sur Compresser le contenu pour sécuriser les données).

J’ai abandonné WinZip au profit de 7-Zip car il est rapide, gratuit, efficace et disponible pour Windows et Linux.

Si vous êtes un fan de WinZip, consultez le module complémentaire de support de ligne de commande WinZip: http://winzip.com/prodpagecl.htm

Vous pouvez archiver autant de fichiers ou de répertoires que votre ligne de commande Windows le permettra:

 wzzip archive.zip dir1 dir2 dir3 ... 

Vous pouvez télécharger le zip GNU pour Windows sur http://gnuwin32.sourceforge.net/packages/zip.htm . Si vous voulez obtenir l’itinéraire complet de la ligne de commande UNIX, zip est disponible avec http://www.cygwin.com/ .

La page de manuel donne cet exemple qui semble résoudre votre problème, il existe également de nombreuses autres options de ligne de commande:

Par exemple, si foo.zip existe et contient foo / file1 et foo / file2, et que le répertoire foo contient les fichiers foo / file1 et foo / file3, alors:

  zip -r foo.zip foo 

ou plus concis

  zip -r foo foo 

remplacera foo / file1 dans foo.zip et appenda foo / file3 à foo.zip. Après cela, foo.zip contient foo / file1, foo / file2 et foo / file3, avec foo / file2 inchangé par rapport à avant.

Regardez dans un ancien programme appelé PKZIP. Je crois que vous pouvez aussi le faire avec WinZip et 7Zip.