3 votes

Comment zipper un dossier en utilisant la ligne de commande tout en conservant sa structure de fichiers ?

Par exemple, si je veux zipper /Users/admin/Downloads/Backup et je suis à /Users/admin/ Je pourrais :

zip -r downloads.zip /Users/admin/Downloads/Backup

et si je décompresse downloads.zip Je prendrais un dossier Users et j'aurais une structure Users => admin => Downloads => Backup.

Ce comportement est particulièrement indésirable si je veux créer un fichier zip d'installation pour TWRP.

Donc, à la place, je vais devoir le faire :

cd /Users/admin/Downloads/Backup; zip -r /Users/admin/downloads.zip .; cd /Users/admin/

Ça ne ressemble pas à ce qu'un pro ferait.

Que puis-je faire pour zipper un dossier tout en conservant sa structure de fichiers ?

1voto

LаngLаngС Points 7522

Pas sûr que ce soit vraiment ce que vous voulez, car vous pouvez utiliser la ligne de commande ou un script mais il y a des options.

Tout d'abord, ne fournissez pas le chemin complet pour l'archive

 cd folder; zip -r ../zipped_dir.zip *

Ou pour un script, vous pouvez utiliser cd ou pushd et popd pour vous déplacer dans le répertoire qui sera la racine de l'archive avant de lancer la commande zip. La manière de procéder dépendra de la façon dont le script sait ce qu'il faut zipper. Mais, si par exemple vous voulez que admin/Downloads/Backup/folder soit zippé avec des chemins internes de seulement ./folder, vous devrez faire ceci :

pushd /Users/admin/Downloads/Backup
zip -r /path/to/out.zip ./folder/
popd

Ainsi, votre fichier out.zip contiendra les chemins relatifs que vous souhaitez.

1voto

Michael Zhou Points 167

Un "pro" aurait d'abord lu le manuel. Maintenant, le zip Le manuel est plein d'erreurs, mais au fil de la lecture, vous trouverez : " zip stockera le chemin complet (relatif au répertoire actuel) ". Plus loin dans la lecture, vous trouverez une option pour supprimer tous les chemins dans votre archive zip mais ce n'est pas une bonne idée, car vous pouvez créer une archive "bombe" qui polluera le répertoire dans lequel elle est extraite. Il est préférable de contenir votre archive dans son propre répertoire.

cd /Users/admin/Downloads
zip -r downloads Backup
mv -- downloads.zip some/other/location
cd -
  • Tout d'abord, nous changeons le répertoire à /Users/admin/Downloads
  • Nous nommons l'archive (téléchargements) et .zip sera ajouté au nom de l'archive.
  • Nous faisons une récursion dans le répertoire Backup en ajoutant tous les fichiers, y compris le répertoire parent, à l'archive.
  • déplacer l'archive zip vers un autre emplacement
  • Enfin, nous appelons la variable d'environnement OLDPWD pour revenir à l'annuaire original- cd -

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X