Когда я использую tar для архивирования каталога, а затем сжимаю его отдельно, например, xz , в моей системе будет три файла: dir , dir.tar и dir.tar.xz Как только сжатие завершено, dir.tar удаляется, но, похоже, я все еще должен убедиться, что у меня достаточно свободного дискового пространства для размещения всех трех файлов в этой настройке.

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

Сначала я выдвигал гипотезу, что, возможно, архив tar был создан и удален постепенно, так как он был сжат, но в то же время я помню, что где-то читал, что весь архив tar должен быть создан перед сжатием. Я не могу наблюдать какой-либо временный tar-файл, скрытый или нет.

Нужно ли использовать tar с флагом сжатия на самом деле меньше свободного дискового пространства, чем при первом использовании tar с последующей утилитой сжатия? Почему / почему нет (возможно, шаг за шагом, что делает tar+ флаг сжатия)?

1 ответ1

2

Да, непосредственное использование флагов сжатия в команде tar (например, tar czf) уменьшит использование промежуточного диска, поскольку не создает временный несжатый файл tar, а скорее использует каналы для прямой передачи stdout tar в stdin утилиты сжатия. ,

В зависимости от того, как каналы реализованы в вашей конкретной системе, tar может показывать, что записывает файл, но этот файл на самом деле будет очередью FIFO без заметного потребления пространства.

Без флага:
Файлы> tar = оригинальные файлы + .tar одинакового размера
.tar> gzip = .tgz = исходные файлы + .tar + .tgz
Общее использование диска непосредственно перед удалением .tar в 2-3 раза превышает исходные файлы в зависимости от степени сжатия.

С флагом:
Файлы> tar> gzip = files + .tgz
В худшем случае использование в 2 раза больше оригинальных файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .