J'ai créé un fichier tar.gz (en utilisant l'interface graphique, pas la ligne de commande). Comment puis-je le mettre à jour avec une commande que de nouveaux fichiers sont ajoutés et que les fichiers modifiés sont également mis à jour?
J'ai créé un fichier tar.gz (en utilisant l'interface graphique, pas la ligne de commande). Comment puis-je le mettre à jour avec une commande que de nouveaux fichiers sont ajoutés et que les fichiers modifiés sont également mis à jour?
Réponses:
Vous utiliseriez normalement le drapeau -u pour cela. Depuis la page de manuel de tar:
-u, --update only append files newer than copy in archive
donc cette séquence fera ce dont vous avez besoin:
# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
Pour un aperçu un peu plus détaillé, voir ici: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
Vous ne pouvez pas mettre à jour l'archive TAR compressée ( .tar.gz ) en une seule étape. Mais, si vous avez suffisamment d'espace libre, vous pouvez le faire:
Extrayez le fichier .tar du fichier .tar.gz :
gunzip filename.tar.gz
Mettre à jour le fichier .tar non compressé avec la tar -u
commande:
tar -uf filename.tar new_file
Compressez le fichier .tar mis à jour :
gzip filename.tar
Si vous avez un processeur multicœur, je recommande d'utiliser pigz
au lieu de gzip
pour extraire et créer des fichiers .gz . ( pigz
est une implémentation multi-thread de gzip
)
Remplacez simplement gzip
/ gunzip
commandes par pigz
/ unpigz
.
Si vous souhaitez mettre à jour un fichier particulier dans un *.tar.gz
fichier, procédez comme suit:
Entrez vi
d'où le tar
fichier est disponible
/home>vi
Par exemple, si vous souhaitez modifier simple.tar.gz qui se trouve sous le /home/test/
répertoire:
/home/test>vi
Et dans l'éditeur vide, entrez :n simple.tar.gz
et appuyez sur, Enter
vous obtiendrez la liste des dossiers et des fichiers, déplacez le curseur là où vous souhaitez modifier et cliquez Enter. Il montrera l' vi
éditeur du fichier particulier. Puis i
option pour changer le fichier. Après le changement réussi. Appuyez sur la Esctouche et choisissez :wq
d'écrire et de quitter le fichier. Utilisez ensuite :q
pour sortir de la liste des fichiers.
Si vous allez le faire à plusieurs reprises, une optimisation peut être:
if [[ -f my.tar.gz ]]; then
if [[ ! -f my.tar ]]; then
echo 'No tar, unzipping tar.gz'
gunzip my.tar.gz
fi
tar -uvf my.tar file1 file2 file_new
gzip -fk my.tar # This keeps a copy of the tar.
# -f --force overwrite existing .tar.gz
# -k --keep Keep the input file (.tar file)
else
tar -cvzf my.tar.gz file1 file2
fi