Приведенное выше решение ...| tar c --null -T -
является наилучшим, если у вас достаточно памяти (т.е. список файлов легко помещается в вашу память (в большинстве случаев это так)).Тем не менее, xargs имеет место, если вы ограничены в памяти, но вы должны использовать его соответствующим образом, чтобы множественные вызовы tar не оказывали вредного воздействия.
Для сжатия вы можете использовать:
find . -type f -size -1024k | xargs tar c | gzip > archive.tar.gz
В результате получается файл сцепленных tar-архивов, сжатых вместе в результирующий файл (вы также можете использовать cz
и опустить | gzip
, так как объединяющие архивы gzip по-прежнему действительны gzip, но выпотерять чуть-чуть сжатия или совсем немного сжатия, если вы используете bzip2 или xz вместо gzip).
Чтобы извлечь полученный файл, вы должны иметь для использования --ignore-zeros
или-i
опция tar не только для извлечения первого архива:
tar xizf archive.tar.gz