Детали алгоритмов не относятся к теме здесь1, поскольку они никоим образом не характерны для Linux, не говоря уже о Ubuntu. Вы, однако, найдете здесь приятную информацию.
Теперь, когда вы сказали tar, tar не является и никогда не был программой сжатия. Вместо этого это архиватор; его основная цель - сделать один большой файл из множества маленьких. Исторически это было облегчение хранения на ленточных накопителях, отсюда и название: Tape ARchive.
Сегодня основной причиной использования tar является уменьшение количества файлов в вашей системе. Каждый файл в файловой системе Unix занимает здесь , чем больше у вас файлов, тем меньше доступных inodes и когда вы закончите inodes, вы больше не сможете создавать новые файлы. Проще говоря, то же количество данных, хранящихся в виде тысяч файлов, будет занимать больше вашего жесткого диска, чем те же самые файлы в одном tar-архиве.
Чтобы проиллюстрировать это, поскольку это было оспарировано в комментирует мой раздел 68G /, у меня есть следующее количество общего и используемого inodes (помните, что количество счетчиков inode зависит от типа файловой системы и размера раздела):
Inode count: 393216
Free inodes: 171421
[d8 ] Если теперь я попытаюсь создать больше файлов, чем у меня есть inodes:
$ touch {1..171422}
touch: cannot touch ‘171388’: No space left on device
touch: cannot touch ‘171389’: No space left on device
touch: cannot touch ‘171390’: No space left on device
touch: cannot touch ‘171391’: No space left on device
touch: cannot touch ‘171392’: No space left on device
touch: cannot touch ‘171393’: No space left on device
touch: cannot touch ‘171394’: No space left on device
touch: cannot touch ‘171395’: No space left on device
touch: cannot touch ‘171396’: No space left on device
touch: cannot touch ‘171397’: No space left on device
Нет места? Но у меня много места:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 5,8G 4,3G 1,2G 79% /
Как вы можете видеть выше, создание нескольких сотен тысяч пустых файлов быстро истощает мои inodes, и я больше не могу создавать новые. Если бы я был tar, я мог бы снова начать создавать файлы.
Имея меньше файлов, также значительно ускоряется ввод / вывод файловой системы, особенно в подключенных файловых системах NFS. Я всегда сменяю старые каталоги работы, когда проект завершен, так как у меня меньше файлов, более быстрые программы, такие как find, будут работать.
На Super User есть большой ответ, который идет гораздо более подробно, но в дополнение к вышесказанному, другие основные причины, по которым tar по-прежнему популярны сегодня:
Эффективность: использование tar для передачи через программу сжатия, например gzip, более эффективно, поскольку позволяет избежать создания промежуточных файлов. tar поставляется со всеми видами колоколов и свистков, которые были разработаны за долгую историю, что делает его особенно полезным для резервных копий * nix (думаю, разрешения, владение файлами, возможность напрямую передавать данные на STDOUT и через ссылку SSH ...) Инерция. Мы привыкли tar. Можно с уверенностью предположить, что он будет доступен на любом * nix, который вы могли бы использовать, что делает его очень портативным и удобным для архивов исходного кода.1 Это абсолютно верно и не имеет ничего общего с тем фактом, что я не знаю достаточно о них, чтобы объяснить:) [!d22 ]