"tar" de répertoires en autant de fichier tar

  • Auteur de la discussion Auteur de la discussion Recif
  • Date de début Date de début
WRInaute impliqué
Bonjour,

J'ai des dossiers qui se créent automatiquement et j'aimerais automatiser leur archivage en .tar.gz
J'ai regardé les différentes commandes de tar mais je ne trouve pas c equ'il me faut, donc je suppose qu'il faut faire un petit script, mais là je suis une vraie bille... :(
J'aimerai que pour chaque nouveau répertoire il y ait son fichier .tar.gz correspondant... Comment faire svp?

Merci
 
Nouveau WRInaute
#!/bin/bash

## achtung : en bsh/ksh on ne met pas de $ devant la var à déclarer

pp="/mon/repertoire/de/depart";

## p'tite boucle

for i in `ls -1 $pp`
do
tar -czf $pp/$i.tar.gz $pp/$i
## si tu veux dégommer le rep après compression tu décommente la ligne suivante :
## rm -rf $pp/$i
done
echo "c'est fini"

tu mets le script en cron et c'est joué.
ca répond à ton besoin ?
 
WRInaute impliqué
Oui, ca devrait! Merci beaucoup!
Par contre d'après le script ça prend tous les reps... Il faudrait qu'il prenne juste les rep avec un prefix type zzz_rep1, zzz_rep2, zzz_rep3 etc. C'est possible?
 
Nouveau WRInaute
désolé pour le retard, oui c'est possible :

#!/bin/bash
pp="/mon/repertoire/de/depart";
pp2="/mon/repertoire/archives/";
## p'tite boucle

for i in `ls -1 $pp/zzz_rep*`
do
tar -czf $pp/$i.tar.gz $pp/$i
## si tu veux dégommer le rep après compression tu décommente la ligne suivante :
## rm -rf $pp/$i

## si tu veux déplacer l'archive créé ailleurs, tu décommentes la ligne :
## mv -f $pp/$i.tar.gz $pp2

done
echo "c'est fini"
 
WRInaute impliqué
pas de souci, c'est déjà bien sympa de m'aider :wink:

Par contre, marche pas le script...

- J'ai trouvé une première erreur : tar -czf $pp/$i.tar.gz $pp/$i
C'est plutôt tar -czf $pp2/$i.tar.gz $pp/$i non? (pp2 et non pp)

- Ensuite il créé autant de .tar.gz que de fichiers... Hors il faudrait qu'il créé un fichier tar.gz par répertoire uniquement.

- J'ai une erreur par fichier :

tar: Statut d'erreur reporté d'erreurs précédentes.
tar: Retrait de « / » de tête des noms des membres
tar: /xxx/xxx/xxx/table_users.MYI: ne peut stat: Aucun fichier ou répertoire de ce type
tar: Statut d'erreur reporté d'erreurs précédentes.
 
WRInaute impliqué
Ca y est, j'ai fais quelques modifs et ca fonctionne comme ça :

#!/bin/bash
pp="/un/rep/origine";
pp2="/un/rep/destination";
## p'tite boucle

for i in `ls -1 -d $pp/zzz_*`
do
tar -czf $i.tar.gz $i

## si tu veux déplacer l'archive créé ailleurs, tu décommentes la ligne :
mv -f $i.tar.gz $pp2

done
echo "ok!"

Merci! :wink:
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut