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