Archive tar incrémentiel

Résolu
sispheor Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je souhaiterais savoir si il est possible avec tar de faire une sauvegarde incrémentiel mais dans la même archive compressée.
En gros:
Jour 1: sauvegarde du fichier no 1 dans une archive tar.gz
Jour 2: il repère qu'il y a un nouveau fichier no2, il l'ajoute à la même archive sans recopier à nouveau le premier.
J'utilise la commande ---listed-incremental avec un script qui fait en sorte de sauvé sur le nom de fichier de la veille. Le problème c'est que dans l'exemple je me retrouve le deuxième jour avec une archive contenant que le fichier no 2 alors que je souhaite qu'il s'ajoute à l'archive ou le premier fichier est déjà présent.
Merci de le pas me répondre RTFM par ce que bon le man de tar est assez balaise. Si vous n'avez pas de solution pour moi je le lirais que même.
Un grand merci pour vos réponses.


6 réponses

Pseudo
 
Si ton script s'occupe de détecter les nouveaux fichiers à ajouter tu peux te contenter d'utiliser l'option -r pour ajouter le fichier à une archive existante.
0
sispheor Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   11
 
Et bien le programme me répond "Une archive compressée ne peut pas être mise à jour". Comme ça j'ai ma réponse. Merci.
0
Pseudo
 
Dans ce cas ne la compresse pas. Tu créé ton archive la première fois comme ça :

tar cvf ./archive.tar fichiers_a_archiver

Et ensuite pour ajouter tes nouveaux fichiers :

tar --append --file=./archive.tar nouveaux_fichier
0
sispheor Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   11
 
Bon ça ne marche pas...
Soit ça me rajoute a nouveau les fichiers et je me retrouve avec des doublons dans l'archive, soit ça me dit que l'archive est déja existante sous ce nom blablabla.

J'explique ce que je veux faire. Je veux un dossier pour chaque jour de la semaine. Dedans il y aura la sauvegarde de mon système ou autre données. Je veux pour gagner du temps faire une incrémentiel.
Exemple: Le premier lundi la sauvegarde est complète et va dans le dossier "lundi"
Tout les autre jour de la semaine pareil cela fait une complète la première fois.
Le lundi suivant le script repère juste les fichier qui ont changés et les ajoutes ou les enlève de l'archive du lundi. Pareil pour le reste de la semaine. COmme ça en cas de problème j'ai qu'une seule archive a restaurer. Celle du jour de la semaine que je préfère. Voilou.
Merci pour vos réponses !

Le début fonctionne bien. J'ai encadré le problème plus bas qui concerne l'incrémentiel.

Voila mon script:

#!/bin/sh

#variable
date=$(date +%F)
jour=$(date +%A)
backup_dir=/home/moi/Bureau/save/${jour}/
source=""

echo "Vérification de l'existence de l'archive";
# On teste si l'archive du jour a bien été créée
if [ -e "$backup_dir" ];
then
echo ""
echo "Disque de sauvegarde présent";
echo ""
else
echo ""
echo "Dossier de sauvegarde non présent";
echo "Creation du fichier"
mkdir ${backup_dir}
echo ""
fi

echo "lecture du fichier contenant les chemins de sauvegarde"
while read line ## ici j'ajoute toute les ligne du fichier contenant les chemins des dossier a sauver dans la variable $source
do

#line="\"$line\" "
source="$source$line "
#source="$source\" "

done < /home/moi/Bureau/asauver

echo "Les repertoires à sauver sont: $source"
echo ""

dossier="/home/moi/Bureau/save/${jour}/"
cd $dossier
echo "Le dossier de sauvegarde est: $(pwd)"


ancien=$(ls |head -1) ##on chope n'ancien nom d'archive
echo ""
echo "Archive présente dans le dossier de sauvegarde: $ancien"
echo ""

if [ -e *.tar ] # si ancien existe

then
if [ $ancien = "$date.tar" ] # et qui est à la meme date
then
echo "Archive déja présente pour cette date"
echo ""
else # sinon il est pas a la bonne date

echo "Sauvegarde incrémentiel en cours..."

######### PROBLEME ###########"

echo ""

#tar -rvf $backup_dir/${ancien} --listed-incremental=/$backup_dir/save.list $source
echo "Mise à jour de la date"
mv $ancien "$date.tar"


fi

else # le fichier n'existe pas alors on fait une complete
echo "Sauvegarde complete en cours..."
echo ""
tar -cvf $backup_dir/${date}.tar $source
# --listed-incremental=/$backup_dir/save.list

fi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Peut être devrais-tu jeter un oeil à ça :
http://www.gnu.org/software/tar/manual/tar.html#SEC94

:-))
0
sispheor Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci bien pour ce lien. J'ai trouvé mon bonheur.
En faite je fais une incrémentiel dans un nouveau fichier puis je concatène les deux et enfin je supprime la incrémentiel. Nikel merci!
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Happy for you ;-))


Un petit résumé eut été le bienvenu ;-\
0