Storing snapshot in HDD

Upon my recent dilemma, I plan on reinstalling Manjaro this time with snapshot enabled and BTRFS for my root (/) and maybe for my home (/home) partitions.
The only issue I can for see is my lack of space.

My SSD is quite small but I have a fairly large HDD, I want to know if I store backups of my BTRFS system in another drive and should this drive also be BTRFS?
I assume this is more than possible, but I seek clarification and maybe steps.

Well, first things first, since you appear to be getting a few things mixed up… :wink:

  • Even though you can move btrfs snapshots to another drive, the idea behind them is really that they would remain on the same drive. By consequence, this means that they are not backups, but rather rollback points so you can restore your system to a known working state if ever something goes wrong during an update.

  • If you use btrfs snapshots in the manner as explained in the paragraph above, then they actually don’t take up too much space, because the initial snapshot will actually not consume any space at all, and only the modified disk blocks are stored separately in your current environment.

  • If you are going to store btrfs snapshots on another volume, then this volume needs to be formatted as btrfs as well.

  • However, if you are using timeshift for making snapshots and/or backups, then if you configure timeshift for using the rsync method instead of btrfs snapshots, then you would be making actual backups — I.e. physical copies — of all your files, and then you can do this on any filesystem of your choice, as long as it’s a Linux-native filesystem that supports UNIX file ownership and permissions, as well as hard-links. So that excludes ntfs or anything FAT-based, but you could store your backups on ext4, xfs, jfs or even another btrfs volume.

Myself, I use a rather uncommon btrfs layout here, which is not compatible with the way timeshift handles snapshots, so I am using timeshift in rsync mode to make physical backups onto a separate btrfs filesystem on a HDD — my system itself resides on an SSD.


I have two HDDs as a mirrored brtfs filesystem, and a NAS box with it as well. I can send snapshots to either since they are btrfs as well. And you can just send the new filesyetem changes for successive snapshots. (And this is only sending the block level changes!)

I used to use Timeshift this way, I still have my scripts I used to do it. They are messy doing it incrementally, as you have to deal with btrfs send and receive, and making the old snapshot the parent. But it worked. Tools like Snapper handle this all for you, but figuring it out how to do it this way let me understand btrfs better.

Sending over a single Timeshift snapshot is really easy though. If you’re just happy with sending one, and deleting older snapshots from that point.

With two btrfs fielsystems on the same host, It’s as simple as:

I do use sudo -i first as sudo may timeout with a slow HDD.

btrfs send /mnt/SRC/timeshift-btrfs/snapshots/NAME/@ | btrfs receive /mnt/DST/backups/snapshots/NAME
btrfs send /mnt/SRC/timeshift-btrfs/snapshots/NAME/@home | btrfs receive /mnt/DST/backups/snapshots/NAME

(SRC would be your Manjaro root drive mounted without any subvol option. DST your HDD. And NAME is the folder Timeshift makes, and the name you probably know, like 2024-05-25_01-00-43)

Restoring from these snapshots, I’ve done twice too. It is just two similar commands to restore @ and @home. The only other step was chrooting in and updating grub, and go.


Pleas see@ :mag: backsnap :wink:
Which does the same as what your script does.

Thanks guys! I’ll be trying them out.