У меня была такая файловая структура:
2000/
001.txt
002.txt
003.txt
...
2001/
...
2002/
...
...
2011/
Я думаю, файловая структура не имеет значения, но в любом случае ...
Таким образом, папки представляют пару лет с некоторыми текстовыми файлами внутри.
Теперь я сжимаю все, используя контекстное меню сжатия Nautilus (менеджер архивов) в формате tar.gz
. Я выбираю этот формат так, как будто он требует больше места, чем bz2
, он намного быстрее, когда мне нужно запросить данные внутри.
После этого я создаю вспомогательный текстовый файл со ссылками на содержимое архива (размером 170 КБ) и хотел добавить его в архив, поэтому я просто перетаскиваю & amp; поместите этот файл в созданный архив в Nautilus.
Происходят две плохие вещи:
Перетаскивание файла в архив извлекает весь архив во временную папку, а затем снова сжимает все файлы! Это просто ужасно для больших архивов, и я надеюсь найти лучший путь в Терминале позже
Первоначальный архив был размером ~ 96 МБ, и теперь просто добавив этот текстовый файл 170 КБ, архив стал 140 МБ! Я проверил внутри его тот же контент + этот крошечный текстовый файл
Почему это?
Я только что создал архив с содержимым из двух подпапок, чем перетаскивание и удаление файл размером 100 байт:
$ gzip -l tmp-original.tar.gz
compressed uncompressed ratio uncompressed_name
13297512 69908480 81.0% tmp-original.tar
$ gzip -l tmp-updated.tar.gz
compressed uncompressed ratio uncompressed_name
19231941 69908480 72.5% tmp-updated.tar
Как замечание по первому пункту, насколько я могу судить, команда терминала tar
не может добавлять файлы в сжатый архив (например, в ваш .gz-архив) и, следовательно, должна сначала распаковать архив, затем добавьте добавленный файл и повторите сжатие. Обходным решением может быть монтирование сжатого архива с помощью archivemount
(инструкции здесь) , что позволяет монтировать сжатый архив, добавлять файлы и размонтировать его. Я не могу сказать, является ли это быстрее, чем распаковка, добавление и повторное сжатие.