This packages allows to encode and compress files and directories without the need for them to be written to the filesystem and never loaded entirely in memory.
Note Each file contained in a
tar
file can't exceed an 8Go size.
composer require innmind/encoding
Take a look at the documentation for a more in-depth understanding of the possibilities.
use Innmind\Filesystem\{
Adapter\Filesystem,
Name,
};
use Innmind\TimeContinuum\Earth;
use Innmind\Url\Path;
use Innmind\Encoding\{
Gzip,
Tar,
};
$adapter = Filesystem::mount(Path::of('some/directory/'));
$tar = $adapter
->get(Name::of('data'))
->map(Tar::encode(new Earth\Clock))
->map(Gzip::compress())
->match(
static fn($file) => $file,
static fn() => null,
);
Here $tar
represents a .tar.gz
file containing all the files and directories from sime/directory/data/
, unless the data
doesn't exist then it is null
.