суббота, 10 июля 2010 г.

[soft] Попробовал упаковать 7-Zip-ом большой каталог

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

Решил воспользоваться 7-Zip-ом 4.65. Дошло дело до большущего рабочего каталога с несколькими десятками больших svn-новских рабочих копий. Общее количество файлов – порядка 2.8 миллионов, объем – около 36Gb.

И вот тут то обнаружилась засада. 7-Zip построил полный список файлов, отсортировал по именам и начал их архивировать в получившемся порядке. Т.е. не в порядке расположения каталогов и подкаталогов (скажем, сначала все из каталога aag_2, затем из aag_3, затем из ace, затем из docs, затем из emi_proto и т.д.), а по именам файлов. Сначала он стал сжимать все файлы с именами all-wcprops, затем entities, затем wc-properties, затем ChangeLog и т.д., вне зависимости от того, в каком каталоге эти файлы расположены.

Получилось, что за файлами all-wcprops архиватор сначала шел в каталог aag_2, затем в aag_3, затем в ace и т.д. Потом наступала очередь файла entities и архиватор опять шел в aag_2, aag_3, ace и далее по списку.

Как результат – очень низкая скорость работы. После одинадцати часов работы 7-Zip смог упаковать только 10Gb из 36 со средней скоростью упаковки 255Kb/s, предсказывая еще 29 часов для оставшихся файлов. Что не удивительно, поскольку вместо последовательного чтения содержимого каждого из подкаталогов (более-менее компактно размещающегося на диске), происходило постоянное перепрыгивание с одного места диска на другое. Пришлось 7-Zip прервать.

Сейчас запустил на аналогичном по структуре, но меньшем по объему, каталоге WinRar. Этот, вроде бы, читает файлы последовательно. И, как следствие, работает пошустрее.

Вот интересно, есть ли сейчас бесплатные архиваторы, позволяющие строить 7z или zip архивы, и которые читают содержимое каталогов строго последовательно? (Попробовал PeaZip, он очень прост – в режимах 7z и zip просто запускается консольная версия 7-Zip).

5 комментариев:

4ybaka комментирует...

Может попробовать более новую версию? 4.65 уже полтора года как. Может что и переделали...

Stan комментирует...

Как насчёт старого доброго tar?
В Unix работает хорошо, оказывается, что и для Windows реализация есть http://www.download3000.com/download-wintar-count-reg-53183.html
Но я ей не пользовался.

eao197 комментирует...

@4ybaka: новая версия в статусе беты находится, стремно для резервной копии.

@Stan: насколько я помню, tar образует непрерывный потоковый архив. Поэтому, если нужно будет взять один файл из середины потока, то придется распаковывать все, что ему предшествует.

Nem комментирует...

Это все особенность solid архивов. В rar при создании solid архива (ключ -s) такая же петрушка. Попробуйте для 7z указать ключ -ms=off (отключение). Видимо в нем этот режим включен по умолчанию.

eao197 комментирует...

@Nem: спасибо, очень похоже на то. Я запускал архивацию в 7zFM, чтобы видеть статистику работы. И в GUI настройках не увидел параметров для управления solid/non-solid архивом.