Обновление одного файла в сжатом tar

Для сжатого файла архива, такого как application.tar.gz, который имеет папку application/x/y/z.jar среди прочих, я хотел бы иметь возможность взять самую последнюю версию z.jar и обновить/обновить архив с ней.

Есть ли способ сделать это иначе, чем что-то вроде следующего?

tar -xzf application.tar.gz
cp ~/myupdatedfolder/z.jar application/x/y
tar -czf application application.tar.gz

Я понимаю, что переключатель -u в tar может быть полезен, чтобы не развязывать все это, но я не уверен, как его использовать.

Ответы

Ответ 1

Ну, я нашел ответ.

Вы не можете использовать tar -u с архивом. Таким образом, решение, которое я использовал, было следующим. Обратите внимание, что я переместил файл z.jar в папку, созданную мной в текущем каталоге с именем application/x/y для этой цели.

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

Когда я сделал tar -tf application.tar (после обновления, перед gzip), он появился правильно.

Ответ 2

Если файл, который вы хотите обновить, является текстовым файлом. Затем вы можете напрямую использовать редактор vim, чтобы открыть архив, содержащий файл, и открыть его, как открытая папка с помощью редактора vim. Затем измените файл и сохраните его и закройте.

Однако, если файл является двоичным. Я понятия не имею о решении.