The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Создать новую тему
 - Свернуть нити
Пометить прочитанным
Архив | Избранное | Мое | Новое | | |  
Форум Открытые системы на рабочей станции
Быстренько извлечь файл из tar.xz, !*! Аноним, 08-Ноя-19, 07:17  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • --occurrence N , вроде для этого, но там по дефолту уже 1 Какой версии tar Что, !*! Licha Morada (ok), 07:57 , 08-Ноя-19 (1) +1
    > Проблема лишь в том, что если архив достаточно большой, то tar будет
    > продолжать сканировать архив, даже если файл был найден в самом его
    > начале.

    --occurrence[=N], вроде для этого, но там по дефолту уже 1.

    Какой версии tar? Что-то подозрительно похожее в 1.17 починили, 12 лет назад.
    https://www.gnu.org/software/tar/

    > Что, собственно, делать? Речь идет
    > об архивах, у которых файл обнаруживается в течение пяти секунд чтения,
    > но на сканирование оставшегося архива уходит 55 секунд.

    Если это массивно и критично, можно попытаться сколхозить что-то с --checkpoint и --checkpoint-action, типа периодически смотреть нашелся ли файл, и если да то убиться.
    Хотя, может быть, починить исходники окажется проще. И стабильнее.
    Или перепаковать всё в какой-нибудь другой формат.

    Ещё рекомендую попробовать, есть ли разница в поведении несжатого архива, и сжатого разными способами. Вдруг это расжиматель архив не отпускает до конца, а не сам tar.


    сообщить модератору +1 +/ответить
  • В общем случае вы ничего сделать не можете Возвращать самый первый файл из архи, !*! Аноним (4), 11:07 , 08-Ноя-19 (4)
    > Как извлечь один файл из tar.xz — известно. Все мы это делаем
    > в разные моменты своей жизни:
    >     tar xOf "архив.tar.xz" "точный/путь/к/файлу/внутри/архива"
    > Проблема лишь в том, что если архив достаточно большой, то tar будет
    > продолжать сканировать архив, даже если файл был найден в самом его
    > начале. У BSD-версии есть опция --fast-read, которая "stops after all non-wildcard
    > extraction targets have been found in the archive"; с удивлением обнаружил,
    > что у GNU-версии такой опции нет. Что, собственно, делать? Речь идет
    > об архивах, у которых файл обнаруживается в течение пяти секунд чтения,
    > но на сканирование оставшегося архива уходит 55 секунд.

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

    Если вы часто нуждаетесь в извлечении отдельных файлов, я бы посоветовал вам не использовать сжатие. Оно является узким местом, особенно на виртуальных машинах, где процессорное время серьезно ограничено. Линейное чтение по нынешним временам достаточно быстрое, чтобы пробегать сотни гигабайт за разумное время.

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

    сообщить модератору +/ответить
  • Ещё можно прикрутить индекс и извлекать нужный файл без поиска Емнип работает, !*! Аноним (5), 21:14 , 09-Ноя-19 (5)
    > был найден

    Ещё можно прикрутить индекс и извлекать нужный файл без поиска. :)

    Емнип работает как минимум с gz, наверно это никому не надо раз не взлетело. Но как вариант.

    сообщить модератору +/ответить
 
Пометить прочитанным Создать тему
Архив | Избранное | Мое | Новое | | |



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру