GNU tar - обновить tar-файл, перезаписав исходный файл в командной строке (что возможно путем перетаскивания в диспетчере архивов)

Я хочу обновить tar-файл с измененной частью содержимого, перезаписав исходный файл в сценарии.

Я пробовал tar -u, -Aи -r, но ни один из них не делает то, что я хочу. Я также пытался использовать --overwrite.

Простой тест:

cd ~
mkdir test
echo foo > test1.txt
mkdir test_dir
cd test_dir
echo bar > test2.txt
cd ../..
tar cvf test.tar test
tar tvf test.tar # check content
echo barbarbar >> test/test_dir/test2.txt
tar rvf test.jar test # or Avf, or uvf, it's the same: modified file does not overwrite the original file in the tar
  • -u --overwriteтеоретически будет "обновляться", но на самом деле он только добавляет, а не добавляет измененный файл, поэтому я вижу два test1.txtи один test2.txtв tar, причем test2.txtявляется старым
  • -A --overwriteтеоретически добавит, но ошибки: tar: test: Ошибка чтения в байте 0 при чтении 1024 байт: Является ли каталогом tar: Ошибка неустранима: выход сейчас
  • -r --overwriteтеоретически "добавит", но только добавлять и не перезаписывать, поэтому я вижу два test1.txtи два test2.txtв tar.

Я подумал: ОК, тогда tar не включает возможность обновления tar на месте. Но потом я вспомнил, что этого можно легко добиться, перетащив новую папку в файл tar в Gnome(Я думаю, что это обрабатывается «Менеджером архива»), так что это по крайней мере возможно.

Как перезаписать файлы в tar в командной строке/скрипте?

1
задан 31 December 2021 в 16:24

0 ответов

Другие вопросы по тегам:

Похожие вопросы: