Compression de données lourdes - Linux et OS Alternatifs
Marsh Posté le 18-03-2005 à 13:04:10
Je me rend compte que ça n'est peut-être pas possible de "graver" comme ça. Si c'est le cas, il faudrait faire ceci :
- création d'un tar avec limite à 8Go
- lorsqu'il a dépassé les 8Go il lance un script qui grave ce tar (et envoie un mail pour dire qu'il va falloir changer de DVD)
- passe au tar suivant et ainsi de suite jusqu'à ce que tout le répertoire à compresser ait été gravé.
Marsh Posté le 18-03-2005 à 14:24:27
si tu as de la place à revendre sur le média temporaire, tu peux faire un tar de tout ce que tu as à sauvegarder et ensuite tu le découpes avec split avant de graver chaque partie.
Marsh Posté le 18-03-2005 à 14:43:07
avec une commande du genre
tar cfz - /mes/dossiers/à/sauvegarder | split -b ${taille}m -d - backup-
ça marche.
Marsh Posté le 18-03-2005 à 16:37:31
Merci infiniment à vous 2. J'ai testé et c'est OK pour la création. Cette commande me donner un certain nombre de fichiers (j'ai gardé le nom "backup" ) : backup-00 (de type gzip archive) backup-01 (de type inconnu) backup-02 (de type inconnu) etc... Il ne me reste plus qu'à trouver comment décopresser à partir de plusieurs backup. *part fouiller*
Encore merci !
Marsh Posté le 18-03-2005 à 16:46:21
avec cat tu les rassembles et tu pipes pour exraire ton tar (à tester) :
cat fichier1 fichier2 fichier3 |tar xzf -
Marsh Posté le 18-03-2005 à 17:13:21
Ca marche, j'ai juste un petit message qui s'affiche lorsque je dészip, mais je ne sais pas comment l'interpréter :
bzip2: (stdin): trailing garbage after EOF ignored
La seule chose que j'ai changé dans ta commande c'est le "z", j'ai mis "j" pour qu'il fasse en bzip2 ce qui donne :
# tar jcf - /home/commun/Drivers | split -b 300k -d - TEST-
tar: Removing leading `/' from member names
# cat TEST-00 >> FINAL
# cat TEST-01 >> FINAL
# cat TEST-02 >> FINAL
# cat TEST-03 >> FINAL
# tar xfj FINAL
bzip2: (stdin): trailing garbage after EOF ignored
Au passage, la présence du message "tar: Removing leading `/' from member names" est normale ?
Le nioob n'a plus de question
Marsh Posté le 18-03-2005 à 17:14:47
pour le message de tar, c'est normal, il vire le / au début du patch il me semble (ça se contrôle avec une option)
pour l'incidence du message de bzip2, le plus simple est surement de comparer les sommes md5 avant et après, tu verras si ce sont les même (md5sum ton_fichier)
Marsh Posté le 18-03-2005 à 23:28:25
pour l'erreur ça n'a pas d'incidence. J'ai archivé/découpé une archive source.tar.gz en plusieurs dest-$i et après reconstruction avec un cat sur les différents dest-$i, le fichier résultant correspond parfaitement au source.tar.gz initial.
pour le / enlevé, c'est souhaitable car ça permet de travailler en dossier relatif et non absolu.
Marsh Posté le 18-03-2005 à 23:39:30
le test du md5sum est probant :
|
Marsh Posté le 21-03-2005 à 13:04:51
Ah si ! Une dernière chose (décidement ^^), je pense basique pour certains :
tar jcf - /home/commun/Drivers | split -b 300k -d - TEST-
A quoi correspondent ces 2 tirets en rouge ? Je me demande pourquoi sans eux la commande ne marche pas.
Marsh Posté le 21-03-2005 à 13:26:14
Pour tar, ca veut dire qu'il doit utiliser la sortie standard comme fichier de destination et non un fichier bidule.tar classique.
Pour le split cela signifie qu'il doit utiliser l'entrée standard comme fichier d'entrée à découper.
cela permet d'utiliser le pipe '|' pour associer ces deux commandes ensemble
Marsh Posté le 21-03-2005 à 14:42:27
Génial
Donc voilà le script que j'ai fait pour une partie de la sauvegarde automatique (j'ajouterai la suite au fur et à mesure, des fois que ça dépanne quelqu'un) :
Citation : #!/bin/sh |
L'option P vient du man tar :
-P, --absolute-paths
n'enlève pas les '/' au début des noms des fichiers.
Donc à priori ce script devrait "tarer" le répertoire /home et le découper en tranche de 4608 Mo (1024*4,5 Go), puis mettre tout ça dans /home/tmp.
Il n'y a qu'une seule chose que je trouve bizare : /home fait 1.8 Go et le tar créé fait 3 Go. oO
Est-ce que ça a un rapport avec ce message apparu ? "tar: /home/tmp/SAUVE-00: le fichier a été modifié durant sa lecture". Sûrement, je réessaierai quand il n'y aura plus personne sur le réseau.
Marsh Posté le 21-03-2005 à 14:54:56
le --exclude ne fonctionne pas sur un repertoire mais sur un fichier.
Essaye avec une pattern comme : --exclude /home/tmp/*
(je garantis pas le resultat mais ca mange pas de pain)
Marsh Posté le 21-03-2005 à 16:33:51
Ca roule. J'ai édité au dessus en ajoutant un p (permet de garder les même permissions). Par contre le taux de compression reste assez moyen. :s Je passe de 1,8 Go à 1,5 Go.
J'attaque la gravure sur DVD et l'envoi par mail de rapport (ou demande de changement de DVD).
To be continued...
Marsh Posté le 22-03-2005 à 00:34:56
la commande que j'utilise est la suivante :
nice -19 tar --exclude /home/tmp --exclude /home/bidule -czpf - /home 2>>$logfile | split -b ${taille}m -d - SAUVE-
ça marche uniquement si les --exclude sont AVANT le -czpf (et le --exclude peux concerner des dossiers). Va savoir pourquoi...
Marsh Posté le 18-03-2005 à 12:49:53
Bonjour,
[Debian Sarge, noyau 2.6.8]
J'ai un système de sauvegardes automatiques à mettre en place, assez basique mais avec graveur DVD. J'utiliserai le cron. Comme le volume de données est sensé pouvoir atteindre plus de 30Go, il est évident qu'on va passer par une phase de compression. J'aurais bien voulu utiliser rar, mais il n'est pas libre, donc je me suis rabattu sur tar. Pour 30 Go, cette compression depassant certainement 8Go (à peu près... la taille d'un DVD double couche), il faudrait qu'il change de dvd à chaque fois qu'un est plein. J'imagine qu'il faut utiliser les options M L et F (et jfc bien sûr), mais comment les imbriquer ? (le -F servirai à executer un script envoyant un mail par exemple pour informer qu'il faut changer de DVD)
Des passages du man tar
-M, --multi-volume créer/afficher/extraire une archive à
multiples volumes
-L, --tape-length=N utiliser un autre ruban après l'écriture
de N x 1024 octets
-F, --info-script=SCRIPT exécuter le SCRIPT à la fin de chaque
ruban (implique -M)