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