Archive tar incrémentiel

Résolu
sispheor Messages postés 45 Statut Membre -  
zipe31 Messages postés 34620 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

  1. 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
  2. sispheor Messages postés 45 Statut Membre 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
  3. 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
  4. sispheor Messages postés 45 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sispheor Messages postés 45 Statut Membre 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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Happy for you ;-))


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