Décompression en masse : comment faire ?

Bonjour,

J’ai fait une bourde avec gz, alors que je voulais faire une copie compressée de /etc
j’ai compressé individuellement et récursivement tous les fichiers de /etc

Donc j’ai tous les fichiers à leur place et à l’identique.gz ===> C’est con Hein ! :041

Question : quelle commande gzip … dois-je passer (session live-rescuecd) pour remettre le truc sur ses pattes ?

Merci pour votre indulgeance.

Salut,
Si les fichiers originaux sont là, pas la peine de t’emmerder, efface tous les gz et recommence!

ce sont les originaux qui ont été passés en gz

Ha oui, c’est con… Il existe surement une commande. Je cherche!

Re,

Mais attends confirmation ou fais un test dans un répertoire sans importance avant (une copie de ton /etc par ex).

Oui c’est ballot et en utilisant

[code]ls -X /mnt/part3/etc | grep gz > /tmp/gz-files

  • bidouille manuelle de la liste
    et
    gzip -d -N -r -v [liste]
    [/code]

j’en aurais pour 2 jours

gunzip n’est pas dispo dans mon live-cd si je remplace par gzip -d c’est bon aussi?

Oui, essaye!

Bon, j’ai fais une copie de /etc et un test dessus ==> ça marche! (apparemment)

je teste en vrai et je reviens écrire le résultat…

gunzip est un script bash qui utilise gzip.
voir:

La décompression pourra donc se faire par “gzip -d”.
Mais il faudrait vérifier que les droits, propriétaires, groupes vont correspondre à ceux avant compression,
cela pourrait dépendre aussi de la commande qui a été utilisée pour la compression.

Il devrait être possible de faire un test sur une copie.

EDIT:
Ton post est arrivé avant que je finisse de rédiger celui-là.
reste donc à vérifier les droits et autres attributs après décompression.

Exemples de fichiers dont les attributs seraient à vérifier:

-rw-r----- 1 root daemon 144 juin 9 2012 at.deny drwxr-s--- 2 root dip 4096 avril 13 08:42 chatscripts drwxr-xr-x 4 root lp 4096 juil. 24 06:37 cups -rw-r----- 1 root fuse 216 janv. 2 2013 fuse.conf

Je dirais de faire la même bourde mais avec l’option “X” qui va les décompresser au lieu de les compresser :116

C’était hier et je ne sais plus exactement comment j’ai réussi cette prouesse inespérée :shifty:

gzip -d -N 

devrait comserver les droits, horodatages, etc… je crois?

Sur le test j’ai eu une pallanquée de :

gzip: ./alternatives/CREATE_FOREIGN_TABLE.7.gz: Too many levels of symbolic links

tous dans ./alternatives/

gzip: ./NetworkManager/system-connections/Wired.gz: No such file or directory gzip: connection.gz: No such file or directory gzip: 1.gz: No such file or directory
ça doit pouvoir se régler manuellement

pour les droits faut que je vérifie

Merci

Je suis en train de lire :

En espérant y trouver des réponses sur ce qui se passe, et je constate que les fichiers de ce dossier sont des liens.
d’où la réponse de “gzip -d” : “… Too many levels of symbolic links …”

Il faudrait peut-être utiliser la commande “file” pour déterminer si la cible à décompresser est bien un fichier compressé plutôt qu’utiliser l’extension ".gz"
exemple de retour de la commande file:

michel@deb-quad:~$ file /etc/alternatives/rename /etc/alternatives/rename: symbolic link to `/usr/bin/prename' michel@deb-quad:~$ file /etc/alternatives/rename.1.gz /etc/alternatives/rename.1.gz: symbolic link to `/usr/share/man/man1/prename.1.gz' michel@deb-quad:~$ sudo file /var/log/syslog.2.gz /var/log/syslog.2.gz: gzip compressed data, from Unix, last modified: Tue Jul 23 02:50:33 2013

Il y a peut-être mieux à faire, car je ne suis pas programmeur, mais j’avais fait un script (voir ce fil) que je viens d’adapter pour afficher
seulement les fichiers “.gz” du dossier “/etc/alternatives/” qui sont effectivement des fichiers compressés avec gzip:

[code]#!/bin/bash

NOTE : (le “” en fin de ligne permet de “couper” la ligne de commande en plusieurs)

rechercher les fichiers “.gz” du dossier “/etc/alternatives/” et créer une liste avec un nom de fichier par ligne ("\n"),

puis renvoyer cette liste par un “pipe” ("|") vers la commande suivante.

find /etc/alternatives -name *.gz -printf “/etc/alternatives/”%f\n | \

lire la liste de lignes créée par “find”

while read FICHIER
do
# Est-ce bien un fichier “.gz” qui a été compacté par “gzip” ?
[[ $( file -ib “${FICHIER}” ) != “application/x-gzip; charset=binary” ]] &&
{
# afficher le fichier
echo “”${FICHIER}" est bien un fichier compréssé par gzip"
};
done;
[/code]
manque plus qu’à modifier la ligne “echo “”${FICHIER}” est bien un fichier compréssé par gzip"
pour que la commande “gzip -d” soit appliquée.

EDIT:
Ceci dit, je viens de faire un test en créant un dossier tempraire “/etcTmp” pour la copie de “/etc”,
puis j’y ai copié tous les fichiers du dossier “/etc” et j’ai compréssé récursivement avec “gzip -dr /etcTmp/*” tous les fichiers du dossier temporaire,
ça a donné des messages d’erreurs à cause des liens, mais la commande à compréssé tout ce qu’elle pouvait compresser.
Ensuite j’ai lancé la commande de décompression récursive sur mon dossier temporaire "gzip -dr /etcTmp"
et j’ai comparé les résultats obtenus avec :
diff -rb /etc /etcTmp | grep -v "^diff -rb " | sort
qui a donné:

Seulement dans /etc/console-setup: cached_UTF-8_del.kmap.gz Seulement dans /etc/console-setup: Lat15-Fixed13.psf.gz Seulement dans /etc/console-setup: Lat15-Fixed16.psf.gz Seulement dans /etcTmp/console-setup: cached_UTF-8_del.kmap Seulement dans /etcTmp/console-setup: Lat15-Fixed13.psf Seulement dans /etcTmp/console-setup: Lat15-Fixed16.psf
Bilan, il ne resterait seulement que 3 fichiers à recompresser manuellement.
Le script ne servirait donc qu’à éviter les message d’erreur de la décompression, il est donc inutile pour un si petit travail.

L’prochain coup: fait un tar et compresse uniquement ce dernier :030

Merci pour toutes ces infos ,
je vais les analyser mais c’est un peu costaud pour mon niveau.

Entre-temps, j’avais déjà fait :

les fichiers /alternatives/ sont des liens donc cela semble logique de ne pas avoir pu les traiter avec gzip.

Le système à redémarrer sans histoire et jusqu’à ce que je découvre autre chose, seul la connexion eth(0) avait disparu de Network-Manager (je verrai si d’autres problèmes apparaissent plus tard)

Encore merci à tous pour votre soutien.