GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiornamento di un singolo file in un tar compresso

Se il file che vuoi aggiornare è un file di testo. Allora puoi usare vim editor direttamente per aprire il tarball che contiene il file e aprirlo, proprio come aprire la cartella usando l'editor vim. Quindi modifica il file, salvalo ed esci.

Tuttavia, se il file è un binario. Non ho idea della soluzione.


Bene, ho trovato la risposta.

Non puoi usare tar -u con un archivio zippato. Quindi la soluzione che ho usato è stata la seguente. Nota che ho spostato il z.jar file in una cartella che ho creato nella directory corrente chiamata application/x/y per questo scopo.

gzip -d application.tar.gz
tar -uf application.tar application/x/y/z.jar
gzip application.tar

Quando ho fatto un tar -tf application.tar (dopo l'aggiornamento, prima del gzip) si presentava correttamente.


nel mio caso, ho dovuto eliminare il file e quindi aggiungere il nuovo file con i seguenti passaggi:

il mio file tar

file.tar
└── foo.json
└── bar.json
└── dir
    └── zoo.json

e volevo solo modificare/aggiornare foo.json file senza estrarre e ricreare l'intero file tar file.tar , Ecco i comandi:

tar -x -f file.tar foo.json # extract only foo.json file to my current location
# now modify the file foo.json as you want ...
tar --delete -f file.tar foo.json # delete the foo.json file from the file.tar
tar -uf file.tar foo.json # add the specific file foo.json to file.tar

file compresso:

se è un file compresso, come file.tar.gz , dovrai estrarre il file tar dal file compresso (in questo esempio gzip) utilizzando gunzip file.tar.gz che creerà per te il file tar file.tar . allora sarai in grado di fare quanto sopra passaggi.

alla fine dovresti comprimere nuovamente il file tar usando gzip file.tar che creerà per te un file compresso con il nome file.tar.gz

sottodirectory:

per gestire le sub dir dovrai mantenere la stessa struttura anche nel file system:

tar -x -f file.tar dir/zoo.json
# now modify the file dir/zoo.json as you want ...
tar --delete -f file.tar dir/zoo.json
tar -uf file.tar dir/zoo.json

visualizza la struttura del file:

utilizzando il less comando, puoi visualizzare la struttura del file:

less file.tar

drwxr-xr-x root/root         0 2020-10-18 11:43 foo.json
drwxr-xr-x root/root         0 2020-10-18 11:43 bar.json
drwxr-xr-x root/root         0 2020-10-18 11:43 dir/zoo.json


Linux
  1. Tar:estrarre un singolo file in una directory senza creare sottocartelle?

  2. Apertura di un file .tar.gz con un singolo comando

  3. Come RSYNC un singolo file?

  4. Estrarre un file *.tar.bz2?

  5. Riprendi il trasferimento di un singolo file tramite rsync

Come estrarre (decomprimere) il file Tar Gz

Come estrarre (decomprimere) il file tar.xz

Come creare file Tar Gz

Come creare un file Tar gz

Estrai il file tar.gz in Linux

Formato archivio indicizzato?