#1 Le 15/12/2022, à 20:34
- arvernes
Différences suivant écriture du chemin pour zip
Bonjour,
J'aimerai savoir si il y a une différence entre ces 4 commandes dans la manière dont l'archive zip est constituée et si cela une conséquence lorsque je réinstallerai ces archives :
methode 1
zip -r -m -T /home/moi/sauvegarde/lundi
zip -r -m -T /home/moi/sauvegarde/samedi
methode 2
zip -r -m -T /home/moi/sauvegarde/lundi*
zip -r -m -T /home/moi/sauvegarde/samedi*
methode 3
zip -r -m -T /home/moi/sauvegarde/lundi/
zip -r -m -T /home/moi/sauvegarde/samedi/
methode 4
zip -r -m -T /home/moi/sauvegarde/lundi/*
zip -r -m -T /home/moi/sauvegarde/samedi/*
Il y a des sous-répertoires sous "lundi" et "samedi"
Et il y a des sous-répertoires sous /home/moi/sauvegarde que je ne sauvegarde pas.
Merci
Hors ligne
#2 Le 15/12/2022, à 20:46
- Watael
Re : Différences suivant écriture du chemin pour zip
mais qu'observes-tu ?
les principales différences sont probablement plus entre les méthodes 1 et 3 (je ne zippe pas souvent (je me promène la braguette ouverte; /ME perv'! )), et je ne rsync pas tous les jours, mais c'est expliquer dans le man.
la méthode 2 compressera aussi lundiAutre.
aux suivants, qui zippent plus souvent.
Dernière modification par Watael (Le 15/12/2022, à 21:13)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 15/12/2022, à 20:58
- iznobe
Re : Différences suivant écriture du chemin pour zip
Bonjour , perso , je ne vois aucune difference entre les commandes zip .
la seule chose qui change sont les chemins de la commande .
la 1 va zipper le reprtoire lundi et son contenu .
la 2 tous les repertoires commencant par lundi et finnissant par nimportequoi .
la 3 fera la meme chose que la 1
la 4 zippera tous le contenu de lundi , mais pas lundi lui-meme .
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#4 Le 15/12/2022, à 21:16
- Watael
Re : Différences suivant écriture du chemin pour zip
fais gaffe :
je ne vois aucune difference entre les commandes zip .
la seule chose qui change
il n'y a pas de différence, sauf ce qui change.
Dernière modification par Watael (Le 15/12/2022, à 21:16)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 17/12/2022, à 06:25
- arvernes
Re : Différences suivant écriture du chemin pour zip
OK, merci pour vos réponses. J'utilise ces commandes dans un script avec rsync, et comme l'archive du répertoire que je zippe est trop grosse, je procède en plusieurs étapes. Lorsque je dézippe par la suite et que je compare le répertoire avec ma sauvegarde sur hd par rsync, ce dernier me note que le répertoire racine a été touché. Difficile à expliquer désolé. Je me demandais si l'ordre de sauvegarde et de réinstallation pouvait avoir une importance. Encore merci pour les réponses que vous m'avez faites.
Hors ligne
#6 Le 17/12/2022, à 20:45
- arvernes
Re : Différences suivant écriture du chemin pour zip
J'ai cependant une question dans la suite de ma demande;
Je voudrais pouvoir remplacer dans un batch, des commandes qui sont très longues et qui me rallongent mon batch par une boucle for - do - done. Cependant, je ne sais pas comment solutionner le pb suivant:
Les commandes actuelles sont du genre :
DIRECTORY_TO_BACKUP="gestion_repertoire_1"
etc
if xxxx ; then
xxxx
else
$TAR $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE7_q
fi
Mon pb est que comme vous pouvez le voir, la variable $REPERTOIRE, change suivant la variable $DIRECTORY_TO_BACKUP, donc je ne sais pas comment gérer cette variable $REPERTOIRExx , car par exemple, si j'ai DIRECTORY_TO_BACKUP="repertoire_1", la variable $REPERTOIRE est $REPERTOIRE7_q, si DIRECTORY_TO_BACKUP="repertoire_2", la variable $REPERTOIRE est $REPERTOIRE8, etc..... donc je ne sais pas comment gérer ça dans une boucle for do done. Peut-être d'ailleurs on ne le peut pas. Merci
Hors ligne
#7 Le 17/12/2022, à 22:05
- MicP
Re : Différences suivant écriture du chemin pour zip
Bonjour
Si le numéro est toujours après le dernier caractère "_" qui est dans le nom du répertoire qui sera assigné comme valeur à la variable nommée DIRECTORY_TO_BACKUP
et qu'il n'y a plus rien dans le nom après ce numéro
et si la différence entre les numéros est toujours de 6
alors, tu pourrais utiliser quelque chose comme ça :
mic@deb1156:~$ DIRECTORY_TO_BACKUP="gestion_repertoire_12" # Un nom de répertoire pour tester
mic@deb1156:~$ REPERTOIRE="monRepNuméro" # Un autre nom de répertoire pour tester
mic@deb1156:~$
mic@deb1156:~$ echo $REPERTOIRE$((${DIRECTORY_TO_BACKUP##*_}+6))_q # j'ajoute 6 et j'affiche le nom résultant pour montrer ce que ça donne
monRepNuméro18_q
mic@deb1156:~$
Donc, il te faudrait juste remplacer l'avant-dernière ligne de tes lignes de commandes par :
$TAR $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE$((${DIRECTORY_TO_BACKUP##*_}+6))_q
Dernière modification par MicP (Le 18/12/2022, à 15:41)
Hors ligne
#8 Le 17/12/2022, à 22:11
- iznobe
Re : Différences suivant écriture du chemin pour zip
Bonjour , sinon il existe des tableaux associatifs quand on code , surement que ca existe aussi en bash .
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
En ligne
#9 Le 19/12/2022, à 09:46
- arvernes
Re : Différences suivant écriture du chemin pour zip
Bonjour
mic@deb1156:~$ DIRECTORY_TO_BACKUP="gestion_repertoire_12" # Un nom de répertoire pour tester mic@deb1156:~$ REPERTOIRE="monRepNuméro" # Un autre nom de répertoire pour tester mic@deb1156:~$ mic@deb1156:~$ echo $REPERTOIRE$((${DIRECTORY_TO_BACKUP##*_}+6))_q # j'ajoute 6 et j'affiche le nom résultant pour montrer ce que ça donne monRepNuméro18_q mic@deb1156:~$
Donc, il te faudrait juste remplacer l'avant-dernière ligne de tes lignes de commandes par :
$TAR $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE$((${DIRECTORY_TO_BACKUP##*_}+6))_q
Ton conseil m'a fait modifier mon script pour pouvoir réussir ce que tu mettais. Ca m'aide effectivement. Je bloque sur la partie "+6".
Aujourd'hui compte tenu des modifs, il faudrait que je fasse évoluer la commande de la ligne tar.
Ainsi pour mon premier répertoire à zipper, la variable à la fin de la ligne tar est $REPERTOIRE1, pour le deuxième répertoire à zipper, c'est $REPERTOIRE2, etc...
donc comment dois-je mettre cette ligne dans ma boucle for do done.
$TAR $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE1
mais pour le deuxième répertoire à zipper, il faut que ça fasse :
$TAR $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE2
Je ne sais pas comment faire incrémenter le chiffre dans la variable $REPERTOIRE.
J'ai un autre problème, le critère exclude dans la commande TAR.
Dans mon script, j'ai :
$TAR --exclude={20*.tar.bz2,VirtualBox*} $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE1
Mais cette commande exclude ne vaut pas pour tous les répertoires à backuper. Donc j'ai mis un conditionnel, avec IF ELIF ELSE FI
IF [[ $DIRECTORY_TO_BACKUP = "backups" ]]; then
EXCLUDE_FROM_TAR_ARCHIVE="20*.tar.bz2,VirtualBox*"
ELIF [[ $DIRECTORY_TO_BACKUP = "images" ]]; then
EXCLUDE_FROM_TAR_ARCHIVE="-.mp4"
ELSE
EXCLUDE_FROM_TAR_ARCHIVE="rien_a_exclure_dans_ce_repertoire-*.tar.bz2*"
FI
Mais le pb est dans la commande tar après :
$TAR --exclude={$EXCLUDE_FROM_TAR_ARCHIVE} $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE ??
Mais lorsque tar fait l'archive, il n'exclut pas ce que je lui ai demandé. J'ai l'impression que tar n'accepte pas une variable dans la commande --exclude={} - il va falloir que je fasse l'essai de mettre dans la variable les accolades peut-être....
Merci
Hors ligne
#10 Le 19/12/2022, à 11:33
- Watael
Re : Différences suivant écriture du chemin pour zip
on n'incrémente pas des numéros des noms de variables, on utilise un tableau indexé.
"!/bin/bash
repertoires=( rep1 rep2 repN )
for rep in "${repertoires[@]}"; do : utiliser "$rep"; done
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 19/12/2022, à 13:41
- arvernes
Re : Différences suivant écriture du chemin pour zip
Bon je me réponds à moi-même si ça peut servir à d'autres. Pour mon pb d'exclude avec tar, j'ai traité ça par un "array". Voilà mon code :
exclude_array=()
if [[ $DIRECTORY_TO_BACKUP = "backups" ]]; then
EXCLUDE_FROM_TAR_ARCHIVE=(''20*.tar.bz2' 'VirtualBox*')
elif [[ $DIRECTORY_TO_BACKUP = "machin" ]]; then
EXCLUDE_FROM_TAR_ARCHIVE=('truc*' autre_chose_a_exclure')
else
EXCLUDE_FROM_TAR_ARCHIVE=('rien_a_exclure_dans_ce_repertoire-*.tar.bz2')
fi
for k in "${EXCLUDE_FROM_TAR_ARCHIVE[@]}"; do
exclude_array+=(--exclude="$k")
done
$TAR "${exclude_array[@]}" $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE1
Maintenant, reste le pb de l'incrémentation du répertoire....
Hors ligne
#12 Le 19/12/2022, à 14:32
- arvernes
Re : Différences suivant écriture du chemin pour zip
on n'incrémente pas des numéros des noms de variables, on utilise un tableau indexé.
"!/bin/bash repertoires=( rep1 rep2 repN ) for rep in "${repertoires[@]}"; do : utiliser "$rep"; done
Ben là je coince. Je n'y arrive pas. Je pense qu'il faudrait peut-être que je mette un partie du code que j'ai fait.
repertoire1="\
backups \
"
repertoire2="\
ton_repertoire \
"
repertoire3="\
son_repertoire \
"
repertoire26="\
tmp \
"
etc...
for i in backups ton_repertoire son_repertoire tmp
DIRECTORY_TO_BACKUP="$i"
etc...
cd $BACKUPROOTDIR
exclude_array=()
if [[ $DIRECTORY_TO_BACKUP = "backups" ]]; then
EXCLUDE_FROM_TAR_ARCHIVE=('20*.tar.bz2' 'VirtualBox*')
elif [[ $DIRECTORY_TO_BACKUP = "tmp" ]]; then
EXCLUDE_FROM_TAR_ARCHIVE=('tmp/backintime' 'tmp/images_disques' 'tmp/jedit_backup_directory' 'tmp/utilitaires' 'tmp/video' 'faa2cc*')
else
EXCLUDE_FROM_TAR_ARCHIVE=('rien_a_exclure_dans_ce_repertoire-*.tar.bz2')
fi
for k in "${EXCLUDE_FROM_TAR_ARCHIVE[@]}"; do
exclude_array+=(--exclude="$k")
done
$TAR "${exclude_array[@]}" $TARCOMMANDS $NOM_DU_FICHIER.tar.bz2 $REPERTOIRE1 <-- je coince là.
Je voudrais incrémenter cette variable, donc qu'on ait $REPERTOIRE1, $REPERTOIRE2, etc...
J'ai fait une fonction FunctionNumeroDeRepertoire, qui me donne en résultat un numéro, donc 1, 2 etc... dans une variable $NUMERO_REPERTOIRE
mais je n'arrive pas à utiliser cette fonction pour me donner une variable $REPERTOIRExx
Est ce que je peux faire un truc du genre :
FunctionNumeroDeRepertoire
REP="repertoire"$NUMERO_REPERTOIRE
REP=$"$REP"
Mais ça ne marche pas.
Dernière modification par arvernes (Le 20/12/2022, à 08:07)
Hors ligne