Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/01/2017, à 19:47

lucmars

Tar archiver un sous-dossier et l'extraire dans un dossier

Bonjour

Voilà j'ai un lampp dans /opt et je le sauvegarde tous les ans, en cas de panne de dd, en l'archivant en tant qu'admin.

Mais voilà, l'archive contient /opt/lampp et donc quand je fais l'extraction dans /opt je me retrouve avec /opt/opt/lampp.

Aussi comment faire avec tar pour archiver uniquement le sous-dossier lampp et, si impossible, d'extraire uniquement le dit sous-dossier ?

Merci


Gaulois Matter !

Hors ligne

#2 Le 31/01/2017, à 20:24

erresse

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Bonjour,

Je vais peut-être dire une connerie, mais... as-tu essayé d'extraire ton archive à la racine plutôt que dans le répertoire /opt ?
Il devrait aller l'extraire au bon endroit, non ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 01/02/2017, à 19:20

lucmars

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

erresse a écrit :

Bonjour,

Je vais peut-être dire une connerie, mais... as-tu essayé d'extraire ton archive à la racine plutôt que dans le répertoire /opt ?
Il devrait aller l'extraire au bon endroit, non ?

Non, j'ai peur que cela écrase /opt. C'est ce qu'il devrait se produire, non ?

Tant que /opt est vide c'est pas un souci. D'ailleurs, vu mon besoin, deplacer /opt/opt/lamp vers /opt est facile; par contre supprimer /opt/opt avec rm m'amène parfois à supprimer /opt. Dans ces conditions, j'extrais alors à la racine.


Gaulois Matter !

Hors ligne

#4 Le 01/02/2017, à 20:47

erresse

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Je ne pense pas, si le répertoire "père" existe, il doit entrer dedans au lieu de le créer.
Tu peux faire un essai en faisant un "opt" bidon avec un contenu fictif dans ton répertoire perso et en redescendant l'archive sans entrer dans ce répertoire.
Tu verras bien si le contenu de ton opt bidon est écrasé par la décompression, mais je panse que non...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#5 Le 01/02/2017, à 21:10

MicP

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Bonsoir lucmars et erresse

@ lucmars :

Il aurait fallu que tu nous donne la ligne de commande que tu as utilisé pour créer ton fichier archive,
et celle que tu utilise pour restaurer le fichier archive.

Mais bon…

=======
En attendant, voilà comment je fais :

EDIT : J'avais mal compris l'utilisation de l'option -C de la comande tar
Ci-Dessous, j'aurais dû plutôt utiliser la ligne de commande suivante :

tar -C -cvzf /lamp.tar.gz opt/lamp

De cette façon, le message : "tar: Suppression de « / » au début des noms des membres" n'aurait pas été affiché,
et les noms de fichiers listés n'auraient pas eu de / pour premier caractère.
[/EDIT]
Création du fichier archive /lamp.tar.gz contenant toute l'arborescence du sous-répertoire /opt/lamp :

root@debg53sw:~# tar -cvzf /lamp.tar.gz /opt/lamp
tar: Suppression de « / » au début des noms des membres
/opt/lamp/
/opt/lamp/fichier-1
/opt/lamp/fichier-3
/opt/lamp/fichier-4
/opt/lamp/fichier-2
/opt/lamp/fichier-5
root@debg53sw:~# 

Suppression de toute l'arborescence du sous-répertoire /opt/lamp :

root@debg53sw:~# rm -rf /opt/lamp
root@debg53sw:~# 

Vérification de l'absence du sous-répertoire /opt/lamp et de toute son arborescence :

root@debg53sw:~# ls -laR /opt/lamp
ls: impossible d'accéder à /opt/lamp: Aucun fichier ou dossier de ce type
root@debg53sw:~# 

Décompression du fichier /lamp.tar.gz

root@debg53sw:~# tar -xvzf /lamp.tar.gz -C /
opt/lamp/
opt/lamp/fichier-1
opt/lamp/fichier-3
opt/lamp/fichier-4
opt/lamp/fichier-2
opt/lamp/fichier-5
root@debg53sw:~# 

Vérification du contenu du sous-répertoire /opt/lamp et de toute son arborescence :

root@debg53sw:~# ls -laR /opt/lamp
/opt/lamp:
total 8
drwxr-xr-x 2 root root 4096 févr.  1 20:49 .
drwxr-xr-x 4 root root 4096 févr.  1 20:58 ..
-rw-r--r-- 1 root root    0 févr.  1 20:49 fichier-1
-rw-r--r-- 1 root root    0 févr.  1 20:49 fichier-2
-rw-r--r-- 1 root root    0 févr.  1 20:49 fichier-3
-rw-r--r-- 1 root root    0 févr.  1 20:49 fichier-4
-rw-r--r-- 1 root root    0 févr.  1 20:49 fichier-5
root@debg53sw:~# 

Suppression du fichier archive /lamp.tar.gz :

root@debg53sw:~# rm /lamp.tar.gz 
rm : supprimer fichier « /lamp.tar.gz » ? o
root@debg53sw:~# 

Vérification de l'absence du fichier archive /lamp.tar.gz

root@debg53sw:~# ls -l /lamp.tar.gz
ls: impossible d'accéder à /lamp.tar.gz: Aucun fichier ou dossier de ce type
root@debg53sw:~# 

Tu m'excusera de ne pas avoir pris le temps de faire la même démonstration pour chaque type de fichier d'archive possible…

Dernière modification par MicP (Le 03/02/2017, à 15:20)

Hors ligne

#6 Le 02/02/2017, à 17:28

lucmars

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Salut Micp

Bon, pour archiver, je fais

tar -cvzf /lamp.tar.gz /opt/lamp

puis pour decompresser, je fais

tar -xvzf /lamp.tar.gz -C /opt

après quoi /opt contient :

/opt
    /lampp


Gaulois Matter !

Hors ligne

#7 Le 02/02/2017, à 18:09

erresse

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Ce que je crois comprendre, c'est que lorsque lucmars décompresse son archive, il le fait dans /opt au lieu de le faire à la racine, par peur que le contenu de l'archive ne remplace TOUT le répertoire /opt (qui peut contenir d'autres sous-répertoires que /lamp que l'on ne veut pas écraser). Est-ce bien ça lucmars ?
Du coup, la démonstration de MicP met bien en évidence le fait que le sous-répertoire /lamp est effectivement recréé dans /opt, mais on ne sait pas si /opt lui-même est entièrement remplacé par le contenu de l'archive lorsqu'on décompresse à la racine...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#8 Le 02/02/2017, à 21:46

MicP

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Bonsoir

lucmars a écrit :


puis pour decompresser, je fais

tar -xvzf /lamp.tar.gz -C /opt

Non.
Pour la création de l'archive, tu avais donné /opt/lamp qui est un chemin absolu (qui commence à la racine)
donc, utilise plutôt :

tar -xvzf /lamp.tar.gz -C /

=======
Ou alors :

root@debg53sw:~# cd /opt
root@debg53sw:/opt# 

Dans la commande qui suit, je vais donner un chemin relatif (au répertoire courant qui est /opt)

root@debg53sw:/opt# tar -cvzf /lamp.tar.gz lamp
lamp/
lamp/fichier_0.txt
lamp/fichier_3.txt
lamp/fichier_1.txt
lamp/fichier_2.txt
root@debg53sw:/opt# 
root@debg53sw:/opt# tar -xvzf /lamp.tar.gz
lamp/
lamp/fichier_0.txt
lamp/fichier_3.txt
lamp/fichier_1.txt
lamp/fichier_2.txt
root@debg53sw:/opt# 

Dans cette ligne de commande, j'ai donné le nom du fichier archive à créer (/lamp.tar.gz) en spécifiant un chemin absolu (qui commence par un caractère "/" représentant la racine du système)
Le fichier archive sera donc enregistré dans la racine du système de fichier.

Tu notera qu'en donnant le prompt (root@debg53sw:/opt# ) de départ et de fin,
on peut déduire depuis quelle machine, quel répertoire, et avec quel compte utilisateur les commandes ont été lancées.

Par exemple, le prompt (root@debg53sw:/opt#) m'indique que la commande qui suit a été lancée
root@           => avec le compte utilisateur root
@debg53sw => sur la machine dont le hostname est debg53sw
:/opt              => depuis le répertoire /opt
#                    => il s'agit du compte super-utilisateur (sinon, ce serait le caractère $ qui aurait été utilisé)

=======

erresse a écrit :

…on ne sait pas si /opt lui-même est entièrement remplacé par le contenu de l'archive lorsqu'on décompresse à la racine...

Oui, les répertoires et fichiers seront créés s'ils n'existaient pas,
sinon, ils sont remplacés ("écrasés") par ceux contenus dans l'archive.
Mais aucun répertoire et fichier ne sera supprimé.

Dernière modification par MicP (Le 03/02/2017, à 11:17)

Hors ligne

#9 Le 03/02/2017, à 14:07

lucmars

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Micp

Il m'a semblé lire qiqe part que la commande tar se faisait dans le repertoire personnel uniquement.

J'avais bien tenté de la passer depuis /opt mais tar ne trouvait pas la cible (peut-être une erreur de syntaxe).

J'ai bien compris ta proposition, mais il semble que root soit different de sudo. Dans ce que tu propose, l'archive appartient à root et si je veux la stocker sur une clef il me faudra le faire en tant que root (de memes pour la recuperer).

Tandis qu'avec :

sudo tar -cvzf /lamp.tar.gz /opt/lamp

(plutot sans le "/" devant le nom de l'archive, non ?) l'archive est dans mon home et j'ai la permission pour la copier.


Gaulois Matter !

Hors ligne

#10 Le 03/02/2017, à 14:58

MicP

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

…si je veux la stocker sur une clef …

alors indique le chemin vers cette clef USB pour donner le nom du fichier archive à créer.

=======
Puisqu'il faut les privilèges du compte root pour accéder à ces fichiers,
je vais faire tout ça depuis le répertoire du compte root

michel@debg53sw:~$ sudo -i
[sudo] Mot de passe de michel :
root@debg53sw:~# 

Histoire de démontrer que je suis bien dans le répertoire personnel du compte root
(mais je le savais déjà, puisque le prompt m'indiquait (par le caractère ~) que j'étais dans le répertoire personnel de l'utilisateur)

root@debg53sw:~# pwd
/root
root@debg53sw:~# 

Je mounte le système de fichiers de ma clef USB :

root@debg53sw:~# udisksctl mount -b /dev/sdc1
Mounted /dev/sdc1 at /media/root/monAutreExt2.
root@debg53sw:~# 

(Quand j'avais formaté la première partition de ma clef, j'y avais donné le nom de label : monAutreExt2)

Je créé le fichier archive sur ma clef :

root@debg53sw:~# tar -C / -cvzf /media/root/monAutreExt2/lamp.tar.gz opt/lamp
opt/lamp/
opt/lamp/fichier_0.txt
opt/lamp/fichier_3.txt
opt/lamp/fichier_1.txt
opt/lamp/fichier_2.txt
root@debg53sw:~# 

Je démonte le système de fichiers de ma clef afin de la déconnecter pour partir ailleur avec…

root@debg53sw:~# udisksctl unmount -b /dev/sdc1
Unmounted /dev/sdc1.
root@debg53sw:~# 

=======
Je remounte le système de fichiers de ma clef USB :

root@debg53sw:~# udisksctl mount -b /dev/sdc1
Mounted /dev/sdc1 at /media/root/monAutreExt2.
root@debg53sw:~# 

Je restaure l'archive qui est sur ma clef USB

root@debg53sw:~# tar -C / -xvzf /media/root/monAutreExt2/lamp.tar.gz
opt/lamp/
opt/lamp/fichier_0.txt
opt/lamp/fichier_3.txt
opt/lamp/fichier_1.txt
opt/lamp/fichier_2.txt
root@debg53sw:~# 

Dernière modification par MicP (Le 03/02/2017, à 15:11)

Hors ligne

#11 Le 03/02/2017, à 15:38

lucmars

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Ok, je repompe l'autre variante avec, après avoir monté la clef :

root@debg53sw:~# cd /opt
root@debg53sw:/opt#

et donc de là, je fais

root@debg53sw:/opt# tar -C / -cvzf /media/root/monAutreExt2/lamp.tar.gz lamp

pour archiver sur la clef.

Avant de faire le décompressage de puis la clef, n'y a-t-il pas une erreur dans ma commande tar ?

Si non, pour décompresser ce sera, apres montage de la clef :

root@debg53sw:~# cd /opt
root@debg53sw:/opt#

puis

root@debg53sw:/opt# tar -C / -xvzf /media/root/monAutreExt2/lamp.tar.gz

Je me trompe ?


Gaulois Matter !

Hors ligne

#12 Le 03/02/2017, à 22:38

MicP

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

root@debg53sw:/opt# tar -C / -cvzf /media/root/monAutreExt2/lamp.tar.gz lamp

Le prompt indique que le répertoire courant est /opt
L'option -C / demande à ce que la commande soit exécutée depuis la racine (/)
Donc, la ligne de commande que tu propose dans ton message #11 va archiver le contenu de /lamp qui n'est pas /opt/lamp

Depuis le répertoire /opt, ce sont les lignes de commande que j'ai indiquée dans mon message #8 qu'il fallait utiliser.
Donc :

root@tonNomDeMachine:/opt# tar -cvzf /lamp.tar.gz lamp

=======
Comme (dans ton message #9) tu avais suggéré de faire tout ça depuis le répertoire du compte utilisateur
J'avais proposé les lignes de commandes dans mon message #10

=======
/media/root/monAutreExt2/ est le chemin absolu correspondant au point de montage de ma clef USB.
Bien sûr, il te faudra changer ce chemin en fonction de celui qui corresponds au point de montage du système de fichiers de la partition de TA clef USB.
(je précise au cas où, mais je suis certain que tu l'avais déjà compris)

=======
NOTE : J'admire le travail colossal effectué par les traducteurs,
mais pour le coup, ça m'agace terriblement que dans la traduction de la page man de la commande tar
directory soit traduit par "dossier" car "dossier" est la représentation graphique (icône) utilisée par l'interface graphique, mais le vrai nom est répertoire
Pour :

…
     -C, --directory DIR
           change to directory DIR
…

En français, il aurait dû écrire :

…
     -C, --directory REP
           Exécute la commande à partir du répertoire REP.
…

Pour visualiser la page man originale (non traduite et parfois plus récente), utilise l'option -L de la commande man en lui donnant le paramètre C
Donc :
version traduite :

man tar

version originale :

man -L C tar

(Bien sûr, cette option fonctionne avec la page man de chaque commande.)

Dernière modification par MicP (Le 04/02/2017, à 02:11)

Hors ligne

#13 Le 07/02/2017, à 15:47

lucmars

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Micp a écrit :

L'option -C / demande à ce que la commande soit exécutée depuis la racine (/)

En ce cas cette commande a-t-elle un sens ?

root@mamachien:~# tar -C /opt -cvzf /media/root/maclef/lamp.tar.gz lamp

ou vaut-il mieux :

root@mamachine:/opt# tar -cvzf /media/root/maclef/lamp.tar.gz lamp

Gaulois Matter !

Hors ligne

#14 Le 07/02/2017, à 18:46

MicP

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Comme on peut le constater, le fichier archivé aura le même contenu avec les 2 lignes de commandes que tu cite, et pour la troisième que j'ai rajoutée aussi.

root@debg53sw:~# tar -C /opt -cvzf /media/root/maclef/lamp.tar.gz lamp
lamp/
lamp/fichier_0.txt
lamp/fichier_3.txt
lamp/fichier_1.txt
lamp/fichier_2.txt
root@debg53sw:~# 
root@debg53sw:~# cd /opt
root@debg53sw:/opt# 
root@debg53sw:/opt# tar -cvzf /media/root/maclef/lamp.tar.gz lamp
lamp/
lamp/fichier_0.txt
lamp/fichier_3.txt
lamp/fichier_1.txt
lamp/fichier_2.txt
root@debg53sw:/opt# 
root@debg53sw:/opt# tar -C /opt -cvzf /media/root/maclef/lamp.tar.gz lamp
lamp/
lamp/fichier_0.txt
lamp/fichier_3.txt
lamp/fichier_1.txt
lamp/fichier_2.txt
root@debg53sw:/opt# 

Dans le cas où l'option -C n'est pas utilisée, tout dépends donc du contexte => du répertoire courant <=> celui depuis lequel la commande est lancée
Et bien sûr, dans le troisième exemple où je suis dans le "bon" répertoire, et qu'en plus j'ai utilisé l'option -C

Dernière modification par MicP (Le 07/02/2017, à 21:06)

Hors ligne

#15 Le 07/02/2017, à 19:40

lucmars

Re : Tar archiver un sous-dossier et l'extraire dans un dossier

Micp a écrit :

Et bien sûr, dans le troisième exemple où je suis dans le "bon" répertoire, et qu'en plus j'ai utilisé l'option -C

Bonne nouvelle car j'hesitais à t'en faire la proposition, histoire de ne pas alourdir le fil ; en fait je pressentais que tu l'as propose.

Ok, merci à Erresse car je crois bien que la decompression de l'archive n'ecrasera rien d'autre que ce qu'elle contient. Rester à archiver le sous-rep d'un /opt bien fourni (DE, google ou autres) histoire de ne pas en faire un BLOB.

Merci Micp, on s'arrête là car je ne vais pas faire le padawan qui tance son/sa prof pour le plaisir et surtout la curiosité (quoique les personnes enseignantes préfère cela au mutisme).

Merci à vous deux


Gaulois Matter !

Hors ligne