J'ai besoin de compresser un répertoire en excluant certains sous-répertoires et fichiers; J'ai utilisé ceci:
Zip -r zipfile.Zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.Zip" -x "node_modules"
sans aucun succès; node_modules
est un dossier dans le principal alors que bower_components
est dans l'application des dossiers
Je devine simplement ce que vous voulez.
-x ".*"
exclure tous les fichiers commençant par un point
le faire comme:
-x .\*
exclure tous les fichiers (avec un point dans le nom du fichier)
le faire comme:
-x \*.\*
-
-x "app/bower_components" -x "node_modules"
exclure ce répertoire et tous les fichiers qu'il contient
le faire comme:
-x app/bower_components/\* -x node_modules/\*
-
-x "*.Zip"
exclure tous les fichiers Zip
le faire comme:
-x \*.Zip
Vous excluez node_modules deux fois
Quelque chose comme ça devrait faire l'affaire:
Zip -r zipped.Zip dir1/ -x */\.* *.git* \.* *.Zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*
Où -x
suit est une liste de répertoires et de types de fichiers (extension) à exclure.
En supposant que votre répertoire soit un référentiel git (et à en juger par la question, il est fort probable), vous pouvez ajouter les répertoires que vous souhaitez exclure du fichier .gitignore
et utiliser la commande git archive
pour compresser le contenu de votre répertoire:
git archive --format=Zip HEAD -o zipfile.Zip
Dans votre exemple, le fichier .gitignore
devrait ressembler à ceci:
node_modules
app/bower_components
Cela fonctionne parfaitement pour moi sur Ubuntu 16.04:
Sudo Zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.Zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"
dans chaque projet, ignorez node_modules comme ceci:
for i in */; do Zip -r "${i%/}.Zip" "$i" -x "*/\node_modules/*" ; done