Compression des dossiers avec mot de passe via la ligne de commande

59

Je voudrais savoir s'il est possible de faire ceci via CLI.

J'ai un dossier Fqui contient plusieurs sous-dossiers et des fichiers. Je veux compresser le dossier Fdans le .zipfichier avec "extraire le mot de passe uniquement".

UnderDog
la source
1
Googlers ... → s'il vous plaît cesser de faire toute confiance dans le mot de passe zip « protection » - voir réponse ci - dessous
Frank Nocke

Réponses:

68

Accédez au dossier correspondant à l’aide de la cdcommande suivante:

cd /path/to/folder/

(Si votre dossier Fest dans votre dossier personnel, vous pouvez simplement le faire cd ~.)

Ensuite, tapez votre terminal:

zip -er F.zip F

Cela vous demandera un mot de passe. Donnez-le, et cela créera un fichier zip protégé par mot de passe à partir de ce dossier.

  • -eactive le cryptage de votre fichier zip. C'est ce qui fait qu'il demande le mot de passe.
  • -r rend la commande récursive, ce qui signifie que tous les fichiers du dossier seront ajoutés au fichier zip.
  • F.zip est le nom du fichier de sortie.
  • F est le dossier que vous voulez compresser.

Il existe une option appelée -Pqui vous permettra de transmettre le mot de passe dans la commande elle-même, mais ce n'est pas bien, car il y a toujours la menace d'un coup d'oeil par-dessus l'épaule . D'autres utilisateurs peuvent également voir le mot de passe à l'aide de la ps -efcommande si vous utilisez -Pswitch. Avec ce -Pcommutateur, la commande ressemblera à ceci:

zip -P password -r F.zip F
  • Visitez man zippour plus d'informations.
dedunumax
la source
-e signifie chiffrer
dedunumax
Hey je viens de modifier votre question pour inclure un peu de contexte. Mais pouvez-vous le modifier pour inclure votre -e means encryptcommentaire, ainsi que la signification de l' -roption. Merci!
Alaa Ali
Tx Dedunu pour votre entrée. Juste une précision supplémentaire. Et si j’ai besoin d’automatiser cela ... Ce que je veux dire, c’est qu’au lieu de demander un mot de passe, puis-je définir un mot de passe dans la commande elle-même?
UnderDog
J'ai ajouté ça aussi.
dedunumax
1
Mais il est fortement déconseillé de l'utiliser car votre historique sera enregistré. sinon les autres utilisateurs peuvent voir votre mot de passe avec "ps aux"
dedunumax
40

Le cryptage des fichiers zip est faible et peut être cassé très facilement. Utilisez plutôt 7zip.

7z a -p Fdirectory.7z /path/to/F
  • a Cette commande indique à 7zip d’ajouter des fichiers.
  • -p Vous pouvez soit laisser le champ vide pour qu'il vous demande de manière interactive ou taper votre mot de passe ici.
  • Fdirectory.7z est le nom de l'archive à créer.
  • /path/to/Fest le chemin de votre répertoire. Cela peut être un chemin relatif ou complet.

Il est recommandé de ne pas taper le mot de passe dans le shell car il est visible par toute personne ayant accès au /procrépertoire.

Braiam
la source
3
Il semble que si vous passez -puniquement à 7zet omettez le mot de passe, il vous le demandera de manière interactive - même une seconde fois pour confirmation.
SSC
@ssc c'est l'option la plus utile, mais elle ne figure pas dans les pages de manuel.
Braiam
J'ai essayé la commande ci-dessus pour compresser un dossier avec quelques fichiers totalisant environ 19 ko. Pourtant, cela prend environ 2 minutes! Pourquoi ça prend si longtemps?
BringBackCommodore64
2
@ BringBackCommodore64 N'utilisez pas l'indicateur -r pour recurse. 7z sera récursivité le répertoire source sans ce drapeau. -rajoutera à la place tous les fichiers et sous-répertoires du répertoire de travail actuel . La page de manuel de 7z met spécifiquement en garde contre cela et indique que ce drapeau doit être évité. linux.die.net/man/1/7z
Håken Lid le
1
@ rubo77 n’importe quel format est susceptible de bruteforcing, mais 7zip algo n’est pas facilement cassable, comme le montre la réponse même où un mot de passe de> 12 caractères pourrait être impossible.
Braiam