Scinder les archives tar et les télécharger un à la fois

3

Je souhaite sauvegarder mes systèmes afin de scinder les archives tar avec un script les téléchargeant une à une. Il doit créer l'archive divisée, puis exécuter un script. Le script télécharge la pièce et la supprime. Cela permet d'éviter que les sauvegardes utilisent autant d'espace sur le système. Je pouvais créer les archives divisées et les télécharger, mais il me faudrait 50% d’espace libre. J'ai donc besoin de les créer un à la fois. Je cherche des conseils sur la meilleure approche. J'ai quelques idées en tête, vous pouvez en suggérer une meilleure.

Première approche: divisez les archives avec tar lui-même et utilisez --new-volume-script. Le problème, c’est que je dois calculer l’ampleur de la sauvegarde. Le goudron semble nécessiter des instructions spécifiques concernant le nombre de pièces et leur taille. Cela signifie que mon script devrait calculer cela et générer les paramètres de tar.

tar -c -M -L 102400 --file=disk1.tar --file=disk2.tar --file=disk3.tar largefile.tgz

Cela crée trois fichiers de 100 Mo pour chaque partie. S'il existe un moyen de le faire de manière dynamique avec tar en nommant automatiquement les fichiers et en créant autant de fichiers que nécessaire, j'aimerais le savoir, car cela rendrait cette approche réalisable.

Deuxième approche: écrivez mon propre script qui se comporte comme un split. La sortie de tar lui est donnée sur stdin, et il télécharge les fichiers et fait attendre tar. Ce serait la solution la plus simple.

John Tate
la source

Réponses:

0

Cette solution n'utilise pas tar, mais vous pourrez peut-être le faire fonctionner avec afio. Toute la logique pour scinder l'archive est intégrée, avec la possibilité d'exécuter des scripts après chaque scission de volume:

cd /path/to/files -print | \
   afio -oxv -s 1g -H rotate.sh backup-`date -Imin`-Vol%V.afio

Et rotate.sh est votre script pour télécharger et supprimer chaque fichier d'archive. Cela génère des archives:

backup-2014-11-29T18:04-0500-Vol1.afio
backup-2014-11-29T18:04-0500-Vol2.afio
backup-2014-11-29T18:04-0500-Vol3.afio
...

Et court rotate.sh après chaque volume est terminé.

Autres options:

-o              # create an archive
-x              # perserve ownership suid/sgid
-v              # verbose
-s 1g           # split archives after 1g
-H rotate.sh    # run this script after each 'tape change'
-Z -P xz        # Compress, and use xz instead of gzip
 # Also, %V, below, inserts the volume number into the file name
 backup-`date -Imin`-Vol%V.afio               

Autre afio aspects: C'est similaire à cpio, sauf qu'il est spécifiquement conçu pour les sauvegardes scriptées. Également il est plus sûr pour les archives compressées car il stocke chaque fichier compressé individuellement, au lieu de compresser le flux entier. De cette manière, une corruption de données après compression affecte uniquement un fichier, et non l’archive entière. De la même manière, il peut également chiffrer au format gpg chaque fichier lors de son stockage, ce qui est excellent pour le stockage dans le cloud.

glallen
la source