LINUX.ORG.RU

tar update & list

 


0

1

Добрый день.
Создал архив ~/sourcearch1 и ~/sourcearch2, потом обновил ~/sourcearch2/file3 и сделал апдейт архива (u) и теперь вижу в листинге архива две версии file3:

[kagerro@cent1 ~]$ tar tvf arch.tar
drwxrwxr-x kagerro/kagerro   0 2019-03-24 21:15 sourcearch1/
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:15 sourcearch1/file1
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:15 sourcearch1/file2
drwxrwxr-x kagerro/kagerro   0 2019-03-24 21:16 sourcearch2/
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:16 sourcearch2/file3
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:16 sourcearch2/file4
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:50 file5
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:54 sourcearch1/file6
-rw-rw-r-- kagerro/kagerro  11 2019-03-24 21:54 sourcearch2/file3
Если распаковать архив, то, конечно, файл file3 будет в одном экземпляре, но такой листинг архива это нормально? By-design, так сказать?

Насколько я знаю, tar «склеивает» файлы (плюс плюхи). В твоём arch.tar два файла sourcearch2/file3. Но это ИМХО.

Deleted
()
Ответ на: комментарий от Deleted

Ну, при распаковке он их показывает вроде как 2, а в результате имеется один:

[kagerro@cent1 ~]$ tar xvf arch.tar -C destarch3/
sourcearch1/
sourcearch1/file1
sourcearch1/file2
sourcearch2/
sourcearch2/file3
sourcearch2/file4
file5
sourcearch1/file6
sourcearch2/file3
[kagerro@cent1 ~]$ ls -laR destarch3/
destarch3/:
total 4
drwxrwxr-x.  4 kagerro kagerro   57 Mar 24 21:59 .
drwx------. 20 kagerro kagerro 4096 Mar 24 21:59 ..
-rw-rw-r--.  1 kagerro kagerro    0 Mar 24 21:50 file5
drwxrwxr-x.  2 kagerro kagerro   45 Mar 24 21:59 sourcearch1
drwxrwxr-x.  2 kagerro kagerro   32 Mar 24 21:59 sourcearch2

destarch3/sourcearch1:
total 0
drwxrwxr-x. 2 kagerro kagerro 45 Mar 24 21:59 .
drwxrwxr-x. 4 kagerro kagerro 57 Mar 24 21:59 ..
-rw-rw-r--. 1 kagerro kagerro  0 Mar 24 21:15 file1
-rw-rw-r--. 1 kagerro kagerro  0 Mar 24 21:15 file2
-rw-rw-r--. 1 kagerro kagerro  0 Mar 24 21:54 file6

destarch3/sourcearch2:
total 4
drwxrwxr-x. 2 kagerro kagerro 32 Mar 24 21:59 .
drwxrwxr-x. 4 kagerro kagerro 57 Mar 24 21:59 ..
-rw-rw-r--. 1 kagerro kagerro 11 Mar 24 21:54 file3
-rw-rw-r--. 1 kagerro kagerro  0 Mar 24 21:16 file4
Есть вероятность того, что он действительно хранит оба файла, но при распаковке, распаковав file3 v1 заменяет его файлом file3 v2?

nokogerra
() автор топика
Ответ на: комментарий от nokogerra

Есть вероятность того, что он действительно хранит оба файла, но при распаковке, распаковав file3 v1 заменяет его файлом file3 v2?

Так я именно об этом.

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

stat arch.tar

до и после update.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted
[kagerro@cent1 ~]$ stat arch.tar
  File: ‘arch.tar’
  Size: 10240           Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 76          Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ kagerro)   Gid: ( 1000/ kagerro)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-24 21:56:12.115433803 +0700
Modify: 2019-03-24 21:56:05.620292449 +0700
Change: 2019-03-24 21:56:05.620292449 +0700
 Birth: -
[kagerro@cent1 ~]$ echo "NEWCONTENT" >> sourcearch2/file3
[kagerro@cent1 ~]$ tar uvf arch.tar sourcearch2/
sourcearch2/file3
[kagerro@cent1 ~]$ stat arch.tar
  File: ‘arch.tar’
  Size: 10240           Blocks: 24         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 76          Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ kagerro)   Gid: ( 1000/ kagerro)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-24 21:56:12.115433803 +0700
Modify: 2019-03-24 22:32:20.921651343 +0700
Change: 2019-03-24 22:32:20.921651343 +0700
 Birth: -
[kagerro@cent1 ~]$ tar -tvf arch.tar
drwxrwxr-x kagerro/kagerro   0 2019-03-24 21:15 sourcearch1/
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:15 sourcearch1/file1
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:15 sourcearch1/file2
drwxrwxr-x kagerro/kagerro   0 2019-03-24 21:16 sourcearch2/
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:16 sourcearch2/file3
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:16 sourcearch2/file4
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:50 file5
-rw-rw-r-- kagerro/kagerro   0 2019-03-24 21:54 sourcearch1/file6
-rw-rw-r-- kagerro/kagerro  11 2019-03-24 21:54 sourcearch2/file3
-rw-rw-r-- kagerro/kagerro  22 2019-03-24 22:31 sourcearch2/file3
[kagerro@cent1 ~]$
nokogerra
() автор топика
Ответ на: комментарий от Deleted

Не-не, это я фиговый пример привел, вот наглядный, и ты был прав:

[kagerro@cent1 ~]$ dd if=/dev/urandom of=random/random1 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0626577 s, 167 MB/s
[kagerro@cent1 ~]$ ls -lah random/
total 11M
drwxrwxr-x.  2 kagerro kagerro   21 Mar 24 22:38 .
drwx------. 21 kagerro kagerro 4.0K Mar 24 22:36 ..
-rw-rw-r--.  1 kagerro kagerro  10M Mar 24 22:38 random1
[kagerro@cent1 ~]$ tar cvf temp.tar random/
random/
random/random1
[kagerro@cent1 ~]$ stat temp.tar
  File: ‘temp.tar’
  Size: 10496000        Blocks: 20504      IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2765583     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ kagerro)   Gid: ( 1000/ kagerro)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-24 22:39:32.840328144 +0700
Modify: 2019-03-24 22:39:32.857328525 +0700
Change: 2019-03-24 22:39:32.857328525 +0700
 Birth: -
[kagerro@cent1 ~]$ dd if=/dev/urandom of=random/random1 bs=1M count=20
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.118627 s, 177 MB/s
[kagerro@cent1 ~]$ ls -lah random/
total 21M
drwxrwxr-x.  2 kagerro kagerro   21 Mar 24 22:38 .
drwx------. 21 kagerro kagerro 4.0K Mar 24 22:39 ..
-rw-rw-r--.  1 kagerro kagerro  20M Mar 24 22:39 random1
[kagerro@cent1 ~]$ tar uvf temp.tar random/
random/random1
[kagerro@cent1 ~]$ stat temp.tar
  File: ‘temp.tar’
  Size: 31467520        Blocks: 86016      IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2765583     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ kagerro)   Gid: ( 1000/ kagerro)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-24 22:40:14.608263920 +0700
Modify: 2019-03-24 22:40:14.635264526 +0700
Change: 2019-03-24 22:40:14.635264526 +0700
 Birth: -
[kagerro@cent1 ~]$

Итоговый архив весит 30 Мб, то есть он при апдейте не заменяет старый файл. Спасибо за пояснение.

nokogerra
() автор топика
Последнее исправление: nokogerra (всего исправлений: 1)

Если распаковать архив, то, конечно, файл file3 будет в одном экземпляре, но такой листинг архива это нормально? By-design, так сказать?

да, это фича tar. сделано чтобы добавлять файлы на ленту не перематывая. Есть ключик чтобы распаковывать n-ю копию файла, а не последнюю.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 2)

2219 год, лето, время отпусков. Семья Ивановых наряду с другими из десятка миллиардов семей Ивановых стремится покинуть одну из промышленных рабочих планет Москва-17 и отправиться на террасинтезированные пляжи одной из планет-курортов Крым-9, где песчинки подогнаны друг к другу нанороботами, все вейпкурки заботливо собраны таджидронами, а вода содержит идеально выверенный состав всех минералов и примесей.

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

Ждет, пока один из транспортных позитронных квазиквантовых серверов для идентификации и контроля квантового клонирования выполняет обычную свою работу: в очередной раз распаковывает tar архив, содержащий ID и метаинформацию на каждого Иванова для подтверждения перемещения.

Ждут, ведь нет лучшей программы для хранения и архивирования файлов, чем tar, только он единственный позволяет сохранить все аттрибуты линуксовой файловой системы и повсеместно распространен.
Ждут, ведь требуется O(n) для нахождения и распаковки требуемого файла в архиве среди пятидесяти петабайт похожих файлов.
Ждут, ведь так завещали деды, использующие ленты когда-то, хотя сейчас уже никто не помнит, как выглядели те ленты и деды.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Так и будет, ведь tar упаковывает последовательности байт в последовательности байт, а ничего другого кроме последовательности байт у человечества для хранения данных нет.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от legolegs

тар это один из фундаментальных камней *никс системы.
на современный момент корявый, изначально придуманный для заливки файликов на ленточный носитель, а уж потом примотанный на изоленту для архивации.
со временем изоленту много и много раз упрочняли и перематывали покрепче. но недоработки в виде отсутствия индекса архива все равно торчат острыми углами, но все к ним привыкли и считают что так и надо :)
а новые функции пользительные функции типа --listed-incremental внедрены наполовину. зато старые функции типа управления ленточным носителем до сих пор содержутся, хотя используются все более исключаще редко - а вдрук понадобятся !!

pfg ★★★★★
()

Да, это нормально.

tar – это всё же tape archiver, т.ч. уже «записанное» он больше не трогает, а дописывает обновление в конец. При этом предыдущая версия никуда не девается и видна в листинге.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от pfg

Так со времён лент ничего и не поменялось: данные по-прежнему быстрее всего записывать большим непрерывным куском с минимумом seek’ов. Это верно и для лент, и для нжмд, и для сети, и для ОЗУ, и для кеша процессора. Random access memory - это миф.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

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

pfg ★★★★★
()
Ответ на: комментарий от pfg

тар как метод хранения рабочих копий не использует никто.

Разумеется (кроме случаев, когда данные нужны все). Для работы с файлами их кладут на фс. Пытаться изменять данные прямо в архиве - это тупо.

legolegs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.