Влияет ли размер архива tar, zip и rar на время, необходимое для удаления файла из него?

1

Требуется ли больше времени для удаления файлов из большого архива tar zip и rar, чем из меньшего? Я бы подумал, что для удаления файла из архива все данные, которые существуют после удаленного файла, должны быть перезаписаны в архив, что займет больше времени, в отличие от меньшего архива, где объем данных, подлежащих перезаписи -записать меньше ... если нет, то как эти архивы могут удалять данные из середины архива без перезаписи остальных данных?

Даниил
источник

Ответы:

1

Ты совершенно прав. Это немного зависит от точного формата архива и используемого сжатия, но, как правило, как минимум, все данные, хранящиеся «после» удаленного файла, должны быть переписаны.

Дэвид Шварц
источник
Честно говоря, вы также не объяснили, почему хранимые данные необходимо переписать. Может быть, это словарный затруднение, поскольку переписывание может означать разные вещи для разных людей.
Доктор Рейхард
0

tar не поддерживает модификацию сжатых архивных файлов. затем вы должны полностью переписать архив tar, временно не распаковав его. это зависит от формата архива tar.

Znik
источник
-1

Что касается @David (предыдущий постер), я чувствую, что данный ответ несколько отсутствует.

Давайте проанализируем вопросы:

1. Требуется ли больше времени для удаления файлов из большого архива tar zip и rar, чем из меньшего?

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

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

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

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

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

2. Как эти архивы могут удалять данные из середины архива без перезаписи остальных данных?

Рассуждения перед этим вопросом не всегда верны, за исключением редкого «солидного» архива.

За исключением Tar (по причинам, указанным в ссылке на Википедию), и zip, и rar имеют что-то вроде «оглавления», которое позволяет архивам выборочно извлекать данные. Все это делается без повторного сжатия существующих данных, хотя некоторые вещи необходимо изменить внутри архива, чтобы сообщить ему, что файл больше не существует.

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

Доктор Рейхард
источник
Вы никогда не отвечали на вопрос, который вы задали в «2». Как это возможно? Вопрос был не в извлечении или повторном сжатии, а в переписывании .
Дэвид Шварц
Я действительно сделал, если вы читаете о "оглавлении". По сути, каждый файл в архиве сжимается индивидуально. Единственная перезапись, которая может произойти, - это только сдвинуть файлы, которые следуют (содержимое), на позиции, занимаемые удаленным файлом. Но это тривиально, так как вам не нужно ничего менять в сжатых файлах. Лучшим сравнением будет удаление строки текста внутри документа, где каждая строка представляет собой файл. Вам не нужно было переписывать все остальные файлы только для того, чтобы удалить один (кроме случая rar 'solid').
Доктор Рейхард
Итак, если файл находится в начале архива, то вам нужно переписать весь архив, верно? Как это тривиально?
Дэвид Шварц
@ Дэвид Это тривиально в том смысле, что вам не нужно повторно обрабатывать оставшиеся файлы, вся тяжелая работа уже выполнена. Опять же, я ссылаюсь на вашу аналогию: если вы удалите строку в любом месте документа, вам не нужно будет снова писать все строки.
Доктор Рейхард