Я нашел этот абзац в GNU смола
doc, поэтому перезапись не поддерживается смола
. Я удалю исходный файл из tar и добавлю модифицированный.
https://www.gnu.org/software/tar/manual/html_node/how-to-update.html#how-to-update
4.2.3.1 Как обновить архив с помощью «--update»
Вы должны использовать аргументы имени файла с операцией "--update" ( "-u"). Если вы не укажете какие-либо файлы, tar не будет работать ни с какими файлами и не сообщит вам, что он ничего не делал (что может вас сбить с толку).
Чтобы увидеть, как работает опция «--update», создайте новый файл «classical» в каталоге вашей практики и добавьте дополнительный текст в файл «blues» с помощью любого текстового редактора. . Затем запустите tar с операцией «update» и опцией «--verbose» (â-v) с указанием имен всех файлов в каталоге «practice». в качестве аргументов имени файла:
$ tar --update -v -f collection.tar блюз фолк рок классика
блюз
классический
$
Поскольку мы указали подробный режим, tar выводит имена файлов, над которыми он работает, которые в данном случае являются именами файлов, которые необходимо обновить. Если вы запустите «tar --list» и просмотрите архив, вы увидите «блюз» и «классика» в конце. Всего будет две версии участника "blues"; тот, что в конце, будет новее и больше, так как вы добавили текст перед его обновлением.
Причина, по которой tar не перезаписывает старый файл при обновлении, заключается в том, что запись в середину раздела ленты является сложным процессом. Ленты не предназначены для движения назад. Дополнительную информацию о лентах см. в разделе Ленты и другие архивные носители.
РЕДАКТИРОВАТЬ:
--удалять
не работает/очень медленно. Кажется, что удалить файлы из tar не очень-то возможно, возможно, так задумано. Я думаю, что мне нужно извлечь/удалить/переупаковать или: https://unix.stackexchange.com/questions/68732/удалить-файлы-из-tar-архива но пока не знаю как.