Est-il possible d'ajouter / mettre à jour un fichier dans une archive tar.gz? En gros, j'ai une archive qui contient un fichier sur /data/data/com.myapp.backup/./files/settings.txt
et j'aimerais extraire ce fichier de l'archive (déjà terminé) et le replacer dans l'archive une fois la modification terminée. Comment puis-je accomplir cela? Est-ce problématique à cause du .
dans le chemin?
73
.DS_Store
, puis le redistribuer.Réponses:
Le format de fichier tar est juste une série de fichiers concaténés avec quelques en-têtes. Ce n'est pas un travail très compliqué de le déchirer, de mettre votre contenu et de le reconstituer. Cela étant dit, Jander a expliqué que tar, en tant que programme, ne dispose pas des fonctions d’utilité permettant de le faire et que la compression pose des problèmes supplémentaires, qui doivent être effectués avant et après toute modification.
Il existe cependant des outils pour le travail! Il existe au moins deux systèmes vous permettant d'effectuer un montage en boucle d'une archive tar compressée sur un dossier, puis d'effectuer vos modifications dans le système de fichiers. Lorsque vous avez terminé, démontez le dossier et votre archive compressée est prête à rouler.
La première option serait le projet archivemount pour FUSE . Voici un tutoriel à ce sujet . Votre système est probablement déjà doté de FUSE et si ce n’est pas le cas, votre distribution devrait avoir une option.
L'autre option est tarfs . C’est plus simple à utiliser , mais j’ai entendu dire qu’il avait quelques problèmes avec la corruption des archives bzip2, vous pouvez donc le tester assez soigneusement au préalable.
la source
Pour extraire votre fichier de vos archives, vous pouvez utiliser
tar xzf archive.tar.gz my/path/to/file.txt
. Notez que les répertoires dans le chemin du fichier seront également créés. Utiliseztar t
(ietar tzf archive.tar.gz
) pour lister les fichiers de l’archive.tar
ne prend pas en charge la mise à jour "sur place" des fichiers. Cependant, vous pouvez ajouter des fichiers à la fin d'une archive, même s'ils ont le même chemin d'accès qu'un fichier déjà présent dans l'archive. Dans ce cas, les deux copies du fichier seront dans l'archive et le fichier ajouté ultérieurement remplacera la précédente. La commande à utiliser pour cela esttar r
(outar u
pour ajouter des fichiers plus récents que l'archive) est la commande à utiliser. Le.
dans le chemin ne devrait pas être un problème.Il y a cependant un inconvénient: vous ne pouvez pas ajouter d'archive compressée. Alors vous devriez faire:
Ce qui n'est probablement pas ce que vous voulez entendre, car cela signifie réécrire deux fois l'archive complète. Si ce n'est pas une très grande archive, il peut être préférable de tout décompresser, puis de la ré-tarer après l'édition. Alternativement, vous pouvez utiliser une archive non compressée.
la source
tar
programme standard . Tar en tant que format de fichier est en fait très accessible. Vous pouvez facilement écrire un script pour mettre à jour le contenu vous-même, mais d' autres outils le font déjà .gzip -dc archive.tar.gz | tar -r data/data/com.myapp.backup/./files/settings.txt | gzip >archive_new.tar.gz
Le tar étant à l'origine destiné à être utilisé pour les bandes, le "remplacement" de fichiers ne fait pas vraiment partie de la conception. Cependant, vous pouvez utiliser --delete pour supprimer le fichier de l'archive d'origine, puis -u pour mettre à jour l'archive et rajouter le fichier. Cela peut prendre un peu, car tar doit réorganiser l'archive en interne.
la source
sur mon Linux x86_64 GNU / Linux pour effectuer cette opération, j'utilise simplement la commande suivante:
Cette commande provoque la création d’une archive compressée sous l’
/path
utilisation d’une liste de fichiers inclus dans lelist.txt
fichier.la source
/path/archive.tar
au lieu d’ajouter / mettre à jour ce fichier.