On Tue, Oct 3, 2023, 10:24 AM Dag-Erling Smørgrav <d...@freebsd.org> wrote:
> Matthias Apitz <g...@unixarea.de> writes: > > I have on my poudriere build host a ports tree and wanted to move it to > > the host where the resulting packages are installed: > > > > root@jet:/usr/local/poudriere/ports # du -sh ports20230806 > > 397M ports20230806 > > root@jet:/usr/local/poudriere/ports # tar cf p.tar ports20230806 > > root@jet:/usr/local/poudriere/ports # ls -lh p.tar > > -rw-r--r-- 1 root wheel 672M Oct 3 18:00 p.tar > > > > already the size of the tar file is somewhat magic; but if you un-tar it > > on the other host I will get: > > > > [guru@c720-1400094 ~]$ ls -lh p.tar > > -rw-r--r-- 1 guru wheel 672M 3 oct. 18:00 p.tar > > [guru@c720-1400094 ~]$ tar xf p.tar > > [guru@c720-1400094 ~]$ du -sh ports20230806 > > 1,2G ports20230806 > > > > How this is possible? > > Most files in the ports tree are very small. On disk, each file gets > rounded up to the nearest multiple of the filesystem block size, which > could be as small as 512 bytes or as large as 8 kB (or even more in > pathological cases). In a tarball, they get rounded up to the nearest > multiple of 512 bytes plus an additional 512 bytes per file for > metadata. > > For instance, your average distinfo file (of which there are 30k in the > ports tree) is only 200-250 bytes long, but it occupies 512 bytes on an > FFS filesystem, 1 kB in a tarball, and 4 kB on a typical ZFS filesystem. > > Note that if the target system is FreeBSD 14 or newer, you can simply > mount the tarball (`sudo mount -rt tarfs p.tar /usr/ports`). > Do we support any compression on top of that? Has support for poudriere been added for it? Aldo I want a pony.... I'm mostly curious... I have no immediate plans here (though aligning with the boot loader and supporting this on a block device to support rootfs would be cool). Maybe some or all of these wishes would make good GSOC projects? Warner DES > -- > Dag-Erling Smørgrav - d...@freebsd.org > >