Обновление одного файла в сжатом tar - PullRequest
15 голосов
/ 02 июня 2010

Учитывая сжатый архивный файл, такой как 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 может быть полезен, чтобы избежать необходимости распаковывать все это, но я не уверен, как именно его использовать.

Ответы [ 2 ]

21 голосов
/ 02 июня 2010

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

Вы не можете использовать 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), он обнаружился правильно.

6 голосов
/ 27 апреля 2013

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

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

...