Archive tar incrémentiel

Résolu
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. 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.
    1. 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.
      1. 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
        1. 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
          1. 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!
            1. Contributeur
              Happy for you ;-))

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