备份
dosnap 可用于定时备份。
备份到移动硬盘:
sudo btrfs send -p /mnt/_snapshots/%home/{2021-04-30T23-00-57-auto,2021-05-09T23-00-01-auto} | pv |
sudo btrfs receive /path/to/backupdrive/home
相关程序
以下是一些好用的 Btrfs 相关的程序。
dosnap
我写的一个类似 snapper 的自动备份程序。在配置 /etc/dosnap.toml
中指定路径信息和保留备份数量,用 systemd timer 自动创建和清理备份。
compsize
查看 /
的压缩类型和压缩前后的大小
sudo compsize /
btrfs-heatmap
查看 /mountpoint
的 heatmap
sudo btrfs-heatmap /mountpoint
btrfs-list
查看树形的 snapshot 列表
sudo btrfs quota enable /
# 等待 quota rescan
sudo btrfs-list
sudo btrfs quota disable /
btrfs-diff
查看第二个 subvolume 相对于第一个改变的文件
sudo btrfs-diff /mnt/_snapshots/%home/snap /mnt/@home
脚本如下(拷贝自 https://serverfault.com/a/580264)
set -eu
usage() {
echo "Usage: $0 <older-snapshot> <newer-snapshot>" >&2
exit 1
}
[ $# -eq 2 ] || usage "Incorrect invocation"
snapshot_old=$1
snapshot_new=$2
[ -d "$snapshot_old" ] || usage "$snapshot_old does not exist"
[ -d "$snapshot_new" ] || usage "$snapshot_new does not exist"
old_transid=$(btrfs subvolume find-new "$snapshot_old" 9999999)
old_transid=${old_transid#transid marker was }
[ "$old_transid" -gt 0 ] || usage "Failed to find generation for $snapshot_new"
btrfs subvolume find-new "$snapshot_new" "$old_transid" | sed '$d' | cut -f17- -d' ' | sort | uniq