Обновим tar-архив.
Создайте tar-архив, сжатый с помощью gzip.
$ sudo tar --create --gzip --file etc.tar.gz /etc
tar: Removing leading `/' from member names
Просмотрим архивный файл.
$ tar --list --file etc.tar.gz
etc/rsyslog.conf etc/fstab etc/host.conf etc/services [...]
Распакуем tar-архив, чтобы изменить его содержимое, так как мы не сможем обновить сжатые архивы.
$ gzip --decompress etc.tar.gz
Отобразим файл fstab, который будет изменен в этом примере.
$ tar --extract --to-stdout --file etc.tar etc/fstab
/dev/disk/by-id/dm-uuid-LVM-q3VI2tiG4w0MCYMz1ltn1Lzds5tXq4vhIdFisv5vgq7QgB2LyEFtJz0nvxagz95m / ext4 defaults 0 0 /dev/disk/by-uuid/87126642-4f63-4e5b-b8af-301b0dc507d6 /boot ext4 defaults 0 0 /swap.img none swap sw 0 0 /dev/disk/by-uuid/dfd5ad15-eb35-49eb-a694-6e467e548ee2 /var/lib/lxd btrfs defaults 0 0
Распакуйте этот файл.
$ tar --extract --file etc.tar etc/fstab
Изменим это:
$ cat etc/fstab
/dev/disk/by-id/dm-uuid-LVM-q3VI2tiG4w0MCYMz1ltn1Lzds5tXq4vhIdFisv5vgq7QgB2LyEFtJz0nvxagz95m / ext4 defaults 0 0 /dev/disk/by-uuid/87126642-4f63-4e5b-b8af-301b0dc507d6 /boot ext4 defaults 0 0 /swap.img none swap sw 0 0
Обновите tar-архив.
$ tar --update --file etc.tar etc/fstab
Файл будет добавлен в конец, поэтому его будет два экземпляра.
$ tar --extract --to-stdout --file etc.tar etc/fstab
/dev/disk/by-id/dm-uuid-LVM-q3VI2tiG4w0MCYMz1ltn1Lzds5tXq4vhIdFisv5vgq7QgB2LyEFtJz0nvxagz95m / ext4 defaults 0 0 /dev/disk/by-uuid/87126642-4f63-4e5b-b8af-301b0dc507d6 /boot ext4 defaults 0 0 /swap.img none swap sw 0 0 /dev/disk/by-uuid/dfd5ad15-eb35-49eb-a694-6e467e548ee2 /var/lib/lxd btrfs defaults 0 0 /dev/disk/by-id/dm-uuid-LVM-q3VI2tiG4w0MCYMz1ltn1Lzds5tXq4vhIdFisv5vgq7QgB2LyEFtJz0nvxagz95m / ext4 defaults 0 0 /dev/disk/by-uuid/87126642-4f63-4e5b-b8af-301b0dc507d6 /boot ext4 defaults 0 0 /swap.img none swap sw 0 0
$ tar --list --file etc.tar etc/fstab
etc/fstab etc/fstab
Вы можете легко получить доступ к каждому содержимому
$ tar --extract --to-stdout --occurrence=1 --file etc.tar etc/fstab
/dev/disk/by-id/dm-uuid-LVM-q3VI2tiG4w0MCYMz1ltn1Lzds5tXq4vhIdFisv5vgq7QgB2LyEFtJz0nvxagz95m / ext4 defaults 0 0 /dev/disk/by-uuid/87126642-4f63-4e5b-b8af-301b0dc507d6 /boot ext4 defaults 0 0 /swap.img none swap sw 0 0 /dev/disk/by-uuid/dfd5ad15-eb35-49eb-a694-6e467e548ee2 /var/lib/lxd btrfs defaults 0 0
$ tar --extract --to-stdout --occurrence=2 --file etc.tar etc/fstab
/dev/disk/by-id/dm-uuid-LVM-q3VI2tiG4w0MCYMz1ltn1Lzds5tXq4vhIdFisv5vgq7QgB2LyEFtJz0nvxagz95m / ext4 defaults 0 0 /dev/disk/by-uuid/87126642-4f63-4e5b-b8af-301b0dc507d6 /boot ext4 defaults 0 0 /swap.img none swap sw 0 0
Удалим старый файл.
$ tar --delete --to-stdout --occurrence=1 --file etc.tar etc/fstab
$ tar --list --file etc.tar etc/fstab
etc/fstab
По завершении сожмите tar-архив.
$ gzip etc.tar
Кстати, вы можете обновить сразу весь архив.
$ sudo tar --update --file etc.tar /etc
$ tar --list --file etc.tar etc/fstab
etc/fstab etc/fstab
Просто было проще показать разные операции с помощью одного файла