#1 Le 26/01/2008, à 11:52
- Darko
tar création archives nombreuses
Bonjour,
J'aimerai archiver/compresser le contenu de plusieurs répertoires dans plusieurs archives différentes (reprenant le nom des dossiers?).
Je voudrais ne pas avoir à prendre tous les dossiers un par un.
Est-ce possible?
J'ai vu qu'il existait des utilitaires faisant ça sous windows mais bon.
Merci
Hors ligne
#2 Le 26/01/2008, à 12:20
- arnaud741
Re : tar création archives nombreuses
Un petit script shell peut-être ?
En premier, tu enregistres ceci dans un fichier (appelé sauvegarde.sh par exemple) :
#!/bin/bash
for i in mon_dossier_1 mon_dossier_2 mon_dossier_3 mon_dossier_4
do
tar cvzf $i.tar.gz $i
done
Ensuite, tu n'oublies pas de rendre ce fichier exécutable ( chmod u+x sauvegarde.sh ) et voilà !
Hors ligne
#3 Le 26/01/2008, à 16:01
- Darko
Re : tar création archives nombreuses
Merci de ton aide Arnaud.
Bon je merde un peu là tu va peut-être pouvoir me dire ce que j'ai oublié.
Alors les dossiers à archiver:
darko@PARIS:~$ tree ./dossier_test/
./dossier_test/
|-- a
| `-- a.txt
|-- b
| `-- b.txt
`-- c
`-- c.txt
Le script:
#!/bin/bash
for i in
/home/darko/dossier_test/a_/home/darko/dossier_test/b_/home/darko/dossier_test_c
do
tar cvzf $i.tar.gz $i
done
Le résultat:
darko@PARIS:~$ ./script_test
./script_test: line 5: syntax error near unexpected token `/home/darko/dossier_test/a_/home/darko/dossier_test/b_/home/darko/dossier_test_c'
./script_test: line 5: `/home/darko/dossier_test/a_/home/darko/dossier_test/b_/home/darko/dossier_test_c'
Par ailleurs, même si là ça ne fonctionne pas j'ai l'impression que ton script archive le contenu des dossiers. Quelles modifications faudrait-il faire pour qu'il archive aussi le dossier lui même.
Merci!
Dernière modification par Darko (Le 26/01/2008, à 16:04)
Hors ligne
#4 Le 27/01/2008, à 13:10
- arnaud741
Re : tar création archives nombreuses
En fait, les torts sont partagés !
Toi, tu as un peu mélangé les / et les _ dans la boucle for de ton script... Et moi, je n'avais pas envisagé toutes les situations possibles dans mon script : j'avais supposé que les chemins vers les dossiers à archiver ne contiendraient pas de /
Voici donc une version améliorée de ce script :
#!/bin/bash
dossier_base="/home/darko"
dossiers_archive="dossier_test/a dossier_test/b dossier_test/c"
for i in $dossiers_archive
do
cd "$dossier_base"
ii=$(echo "$i" | sed "s/\//__/g")
tar cvzf "$dossier_base/$ii.tar.gz" "$i"
done
Après exécution de ce script, l'arborescence de ton dossier personnel devrait ressembler à ceci :
|-- dossier_test
| |-- a
| | `-- a.txt
| |-- b
| | `-- b.txt
| `-- c
| `-- c.txt
|-- dossier_test__a.tar.gz
|-- dossier_test__b.tar.gz
|-- dossier_test__c.tar.gz
et tes archives devraient contenir ceci :
tar tzf dossier_test__a.tar.gz
dossier_test/a/
dossier_test/a/a.txt
tar tzf dossier_test__b.tar.gz
dossier_test/b/
dossier_test/b/b.txt
tar tzf dossier_test__c.tar.gz
dossier_test/c/
dossier_test/c/c.txt
C'est bien ce que tu voulais non ?
Hors ligne
#5 Le 28/01/2008, à 00:34
- Darko
Re : tar création archives nombreuses
Exactement oui. à‡a marche impeccable. C'est un peu technique pour moi mais je vais bien regarder ton script et essayer de comprendre. Merci beaucoup en tous cas.
Hors ligne