Archiver uniquement si les fichiers non identiques
Bonjour,
J'aimerai savoir si il est possible d'archiver et compresser des dossiers uniquement si ils ne sont pas identiques à l'ancien archivage que j'ai fais.
En gros je veux faire ça :
-Tester si un argument est présent sur la ligne de commande. Si cet argument n'est pas présent, archiver tout le homedir.
-Si un argument est présent, tester si c'est le nom d'un répertoire. Si oui, archiver ce répertoire. Si non, afficher un message d'erreur et terminer le script.
-Dans le cas de l'archivage du homedir entier, exclure les dossiers et fichiers non désirables, comme le dossier ~/.cache/, grâce à l'option --exclude de l'outil TAR.
-Afin de conserver plusieurs archives successives d'un même répertoire, on souhaite que le nom de l'archive créée contienne la date de création de l'archive. Pour cela, utiliser dans votre script la commande date avec l'option -I et des backquotes.
-Dans votre script, avant la création de l'archive, positionner la variable d'environnement qui va permettre d'obtenir la meilleure compression possible avec le logiciel de compression que vous avez choisi
Voila mon code :
J'avoue que c'est pour des cours mais je ne veux pas la réponse je veux juste des indications pour avancer.
Merci d'avance :)
J'aimerai savoir si il est possible d'archiver et compresser des dossiers uniquement si ils ne sont pas identiques à l'ancien archivage que j'ai fais.
En gros je veux faire ça :
-Tester si un argument est présent sur la ligne de commande. Si cet argument n'est pas présent, archiver tout le homedir.
-Si un argument est présent, tester si c'est le nom d'un répertoire. Si oui, archiver ce répertoire. Si non, afficher un message d'erreur et terminer le script.
-Dans le cas de l'archivage du homedir entier, exclure les dossiers et fichiers non désirables, comme le dossier ~/.cache/, grâce à l'option --exclude de l'outil TAR.
-Afin de conserver plusieurs archives successives d'un même répertoire, on souhaite que le nom de l'archive créée contienne la date de création de l'archive. Pour cela, utiliser dans votre script la commande date avec l'option -I et des backquotes.
-Dans votre script, avant la création de l'archive, positionner la variable d'environnement qui va permettre d'obtenir la meilleure compression possible avec le logiciel de compression que vous avez choisi
Voila mon code :
#!/bin/bash if [ -d "/media/jean/0226-B01E/" ] then echo "La clé USB est branchée !" #Choix des dossiers à archiver et compreser cd /home/jean/ tar Jcf homedir.tar.xz Téléchargements/ Musique/ Documents/ #Premiere vérification check=$(md5sum homedir.tar.xz) #Copie de l'archive vers la clé USB cp /home/jean/homedir.tar.xz /media/jean/0226-B01E/ rm /home/jean/homedir.tar.xz #Vérification des fichiers cd /media/jean/0226-B01E/ check1=$(md5sum homedir.tar.xz) if [ "$check" == "$check1" ] then echo "Le fichier a été verifié" else echo "Erreur dans le fichier" fi else echo "La clé USB n'est pas branchée !" exit fi
J'avoue que c'est pour des cours mais je ne veux pas la réponse je veux juste des indications pour avancer.
Merci d'avance :)
A voir également:
- Archiver uniquement si les fichiers non identiques
- Archiver story instagram - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Comment cacher une conversation whatsapp sans archiver - Guide
- Wetransfer gratuit fichiers lourd - Guide
1 réponse
Bonjour,
Disons qu'en vrai, il me paraît beaucoup plus simple et beaucoup plus adapté d'utiliser
Ensuite pour répondre à ta question avec ta méthode :
- tu peux lister le contenu d'une archive avec
https://www.cyberciti.biz/faq/list-the-contents-of-a-tar-or-targz-file/
- tu peux comparer les données stockées dans deux arborescences avec
- tu ne peux pas vraiment hardcoder le chemin du point de montage, ou même le device dans ton script, car il dépend de ton système. Ça devrait plutôt être un paramètre de ton algorithme, quitte à piocher des valeurs par défaut dans un fichier de configuration (et l'appeler par exemple /home/toto/.applicationrc) s'il existe.
Bonne chance
Disons qu'en vrai, il me paraît beaucoup plus simple et beaucoup plus adapté d'utiliser
git. Rien à coder, tu auras possibilité de gérer les différentes versions etc, etc.
Ensuite pour répondre à ta question avec ta méthode :
- tu peux lister le contenu d'une archive avec
tar:
https://www.cyberciti.biz/faq/list-the-contents-of-a-tar-or-targz-file/
- tu peux comparer les données stockées dans deux arborescences avec
diff(c'est ce que fait
git)
- tu ne peux pas vraiment hardcoder le chemin du point de montage, ou même le device dans ton script, car il dépend de ton système. Ça devrait plutôt être un paramètre de ton algorithme, quitte à piocher des valeurs par défaut dans un fichier de configuration (et l'appeler par exemple /home/toto/.applicationrc) s'il existe.
Bonne chance