Docker?

Docker?

$ lsblk  -o NAME,FSTYPE,SIZE,TYPE,RO,RM,LABEL,MOUNTPOINT'
nvme0n1                     1.8T disk   0  0         
├─nvme0n1p1   vfat         1023M part   0  0 EFI     /boot/efi                                                                    
└─nvme0n1p2   crypto_LUKS 952.9G part   0  0                                                                                                                 
  └─cryptdata btrfs       952.9G crypt  0  0         /var/lib/docker/plugins/76a8e5822617ba4923187fe7a2c0dde066eaa1d0de469f9545f74402a0b9861c/propagated-mount

/var/lib/docker/plugins/76a8e5822617ba4923187fe7a2c0dde066eaa1d0de469f9545f7

$ truncate -s "1G" "foo.btrfs.img"   
$ truncate -s "200M" "foo.btrfs.img"   
$ mkfs.btrfs -f foo.btrfs.img                                                                                                                                                         ✓ nmc-prod 11:23
Label:              (null)
UUID:               de2c05c9-82a2-4729-8122-41a95a506d03
Node size:          16384
Sector size:        4096
Filesystem size:    1.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP              51.19MiB
  System:           DUP               8.00MiB
SSD detected:       no
Zoned device:       no
Incompat features:  extref, skinny-metadata, no-holes
Runtime features:   free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     1.00GiB  foo.btrfs.img

$ sudo mkdir /mnt/foo-loop
$ sudo mount -o loop "foo.btrfs.img" "/mnt/foo-loop"



$ btrfs property set -ts foo ro true
$ sudo btrfs send foo | mbuffer | sudo btrfs receive "/mnt/foo-loop"
At subvol foo
At subvol foo

summary:  195 MiByte in  0.2sec - average of  915 MiB/s
$ sudo btrfs filesystem resize minimize /mnt/foo-loop

$ size="$(sudo btrfs inspect-internal dump-super foo.btrfs.img | grep ^total_bytes | grep -Po '\d+')"
1073741824
$ cp -pvr foo.btrfs.img foo.btrfs.img.backup
$ truncate -s "$size" "foo.btrfs.img"
$ sudo mount -o loop "foo.btrfs.img" "/mnt/foo-loop"
$ sudo umount /mnt/foo-loop 
ls /mnt/foo-loop/foo/
$ diff /mnt/foo-loop/foo/ foo
diff -rb /mnt/foo-loop/foo/ foo
$ du -h foo.btrfs.img.backup 
202M	foo.btrfs.img.backup
$ du -sh foo
196MB
$ du -b foo.btrfs.img.backup 
1073741824	foo.btrfs.img.backup

-o defaults,compress=zstd:9



$ truncate -s "1G" "bar.btrfs.img" 
$ mkfs.btrfs -f bar.btrfs.img
$ sudo mkdir /mnt/bar
$ sudo mount -o loop,defaults,compress=zstd:9 "bar.btrfs.img" "/mnt/bar"
$ sudo btrfs send foo | mbuffer | sudo btrfs receive "/mnt/bar"
At subvol foo
At subvol foo
$ sudo btrfs inspect-internal dump-super bar.btrfs.img | grep ^total_bytes | grep -Po '\d+'
1073741824
$ du -sh bar.btrfs.img 
49M	bar.btrfs.img
$ du -sh foo.btrfs.img 
202M	foo.btrfs.img


$ -rw-r--r--  1 ctang ctang 200M Feb 13 11:45 foo.btrfs.img
 du -h foo.btrfs.img 
200M	foo.btrfs.img

$ sudo btrfs inspect-internal dump-super foo.btrfs.img | grep ^total_bytes | grep -Po '\d+'
209715200
32358400

$ btrfs filesystem resize -500m /mnt/foo
 | bytes_used
 
$ cp -pvr foo.btrfs.img foo.btrfs.img-backup
$ cp -pvr foo.btrfs.img-backup foo.btrfs.img \
	&& truncate -s 125710336 foo.btrfs.img \
	&& sudo mount -o loop,defaults,compress=zstd:9 foo.btrfs.img /mnt/foo
$ sudo umount /mnt/foo

$ truncate -s 168068736 foo.btrfs.img
dwarfsck /path/to/image.dwarfs -l
https://github.com/mhx/dwarfs/releases/download/v0.14.1/dwarfs-0.14.1-Linux-x86_64.tar.xz
tar -C /usr/local -xvf 'dwarfs-0.14.1-Linux-x86_64 (1).tar.xz' --strip-components=1


mkdwarfs -i /path/to/input/dir -o /path/to/image.dwarfs


wargfs