diff --git a/knowledge base/btrfs.md b/knowledge base/btrfs.md new file mode 100644 index 0000000..08dcf4c --- /dev/null +++ b/knowledge base/btrfs.md @@ -0,0 +1,66 @@ +# BTRFS + +## TL;DR + +```shell +# create a volume with single metadata and double data blocks (useless but good example) +sudo mkfs.btrfs --metadata single --data dup /dev/sdb + +# sparse a volume on multiple devices +sudo mkfs.btrfs --label data /dev/sd{a,c,d,e,f,g} --force +echo "LABEL=data /mnt/data btrfs compress=zstd 0 0" | sudo tee -a /etc/fstab + +# create a readonly snapshot of a subvolume +sudo btrfs subvolume snapshot -r /mnt/btrfs-volume/data /mnt/btrfs-volume/snapshot + +# delete a subvolume +sudo btrfs subvolume delete --commit-each /mnt/btrfs-volume/data + +# deduplicate a volume's blocks +sudo duperemove -Adrh --hashfile=/tmp/duperemove.hash /mnt/volume1 /mnt volume2 +sudo jdupes --dedupe --recurse --softabort /mnt/btrfs-volume + +# send and receive snapshots +sudo btrfs send /source-dir/.snapshots/snapshot | sudo btrfs receive /dest-dir/.snapshots/ + +# get the properties of a subvolume/filesystem/inode/device +btrfs property get -ts /path/to/subvolume +btrfs property get -tf /path/to/filesystem +btrfs property get -ti /path/to/inode +btrfs property get -td /path/to/device +btrfs property get /path/to/autoselected/type/of/resource + +# change a subvolume to ro on the fly +btrfs property set -ts /path/to/subvolume ro true + +# get info about a path +sudo btrfs subvolume show /path/to/subvolume + +# check the compress ratio of a compressed path +sudo compsize /mnt/btrfs-volume +``` + +## Check differences between 2 snapshots + +See also [snapper]. + +```shell +sudo btrfs send --no-data -p /old/snapshot /new/snapshot | sudo btrfs receive --dump + +# requires you to be using snapper for your snapshots +sudo snapper -c config diff 445..446 +``` + +## Further readings + +- [Gentoo wiki] +- [Snapper] +- [does btrfs have an efficient way to compare snapshots?] +- [determine if a btrfs subvolume is read-only] + +[snapper]: snapper.md + +[gentoo wiki]: https://wiki.gentoo.org/wiki/Btrfs + +[determine if a btrfs subvolume is read-only]: https://unix.stackexchange.com/questions/375645/determine-if-btrfs-subvolume-is-read-only#375646 +[does btrfs have an efficient way to compare snapshots?]: https://serverfault.com/questions/399894/does-btrfs-have-an-efficient-way-to-compare-snapshots#419444