in my case, I had to delete the file and then add the new file with the following steps:
my tar file
file.tar
└── foo.json
└── bar.json
└── dir
└── zoo.json
and I wanted only to modify/update foo.json
file without extracting and re-creating the whole tar file file.tar
, Here are the commands:
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
compressed file:
if it is compressed file, like file.tar.gz
, you will need to extract the tar file from the compressed file (in this example gzip) by using gunzip file.tar.gz
which will create for you the tar file file.tar
. then you will be able to do the above steps.
at the end you should compress the tar file again by using gzip file.tar
which will create for you compressed file with the name file.tar.gz
sub directories:
in order to handle sub dirs you will have to keep the same structure also in the 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.jsonfile.tar
tar -uf file.tar dir/zoo.json
view the file structure:
by using the less
command, you can view the structure of the 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