Linux : Compresser un répertoire et exclure des sous-répertoires spécifiques

Comment compresser ou plus exactement zipper un répertoire en excluant certains sous-répertoires ?

Pré-requis :

  • Avoir un serveur sous linux (CentOS, Debian, …)
  • Avoir un accès ssh en root

Pour compresser un répertoire :

zip -r mon_repertoire.zip mon_repertoire_a_zipper

Pour compresser un répertoire et exclure un répertoire spécifique :

zip -r mon_repertoire.zip mon_repertoire_a_zipper -x mon_repertoire_a_zipper/dossier_a_exclure/**\* 

Pour exclure plusieurs répertoires en même temps

zip -r mon_repertoire.zip mon_repertoire_a_zipper -x mon_repertoire_a_zipper/dossier_a_exclure1/**\* 
mon_repertoire_a_zipper/dossier_a_exclure2/**\* mon_repertoire_a_zipper/dossier_a_exclure3/**\*

Combiner un script PHP avec une ligne de commande : (Pas optimisé mais ça fonctionne)

$exclure = "mon_repertoire/mon_sous_repertoire1/**\* ";
$exclure .= "mon_repertoire/mon_sous_repertoire2/**\* ";
$exclure .= "mon_repertoire/mon_sous_repertoire3/**\* ";
$exclure .= "mon_repertoire/mon_sous_repertoire4/**\* ";

system(sprintf('zip -r mon_repertoire.zip mon_repertoire/ -x '.$exclure));		

Auteur MisterTeed