Alternatives to Borg backup for incremental backup of personal data?
5d 15h ago by programming.dev/u/calcoline582 in recommendationsHello, I have a bunch of personal data - videos, pictures, documents, PDFs etc. that I want to backup.
I am wondering what is the best way to do this?
Requirements -
- I want to backup multiple different folders from my Linux computer - it is not a full disk backup.
- Encryption would be great to have.
- This needs to be a long term backup - like few years or more.
- Data - small videos, pictures, PDFs, text files, documents, etc. Total size - less than 50-60 GB (for now - but it can increase over time).
- I want to be able to incrementally add more data to backup of respective folders (e.g. new photos, documents etc.), or even add new folders.
- After backup, I want to be able to cleanup my hard disk, reinstall OS or restore data from backup onto a completely new system in a new directory.
- I do not care about stuff like file metadata like owner user, permissions etc.
Questions -
- Is one or more flash drives good for such kind of backup? Or would it get corrupt within few years?
- I found Borg backup, but it suggests that backup should be restored on the same machine - which does not seem to fit my use case.
- It also suggests to keep Borg config directory - which again conflicts with restoring or adding new items from a different system.
- Not sure how well this would work if restoring on a new system?
- Are there any better alternatives?
- If I do use Borg, should using one repository per folder be the way to go about it? Or is there a better way?
- In Borg itself, I am thinking of using the
repokeymethod (key stored with the repository) - and store the passphrase in a KeePass database on a different flash drive. Any different suggestions?
Please feel free to suggest any alternatives or improvements to my plan?
Never had any problems accessing a Borg backup either from the device where it was created or the device where it was stored. I could easily add new folders to my backup script.
Mounting a backup is a user friendly way of restoring some or all files.
Borg is especially nice because it retains a history of file changes.
I always backup my configuration and backup script as well. Maybe backing those up as a separate clear text copy can help you with restoring later in case of catastrophic loss.
What do you mean by configuration and backup script?
Configuration as in dotfiles?
What does a backup script look like? Like a list of borg commands - one for each directory + repo which you want to backup? Or something more?
The configuration is whatever borg saved in ~/.config.
A script would have commands to
- perform the actual backups (you can put multiple directories to the same command)
- check for errors
- delete old archives according to some rules you have.
I have my backups set up to retain a two year old archive, a one year old one, one for the last twelve months, last four weeks and last seven days.
I used Borg to migrate my setup from one machine to another. Worked like a charm. Since it was a complete backup, I just needed to change machine specific files, like fstab and removal of nvidia drivers. Beyond that, it just worked.
Use Vorta GUI for Borg backup on a network drive. Runs a weekly backup and it's been fine so far.
On another machine use an external HDD to backup periodically. Have restored from it without issues.
You can mount each of the snapshots and copy individual or the whole backup to your selected directory.
How comfortable are you with commandline and scripting? I just made a couple of scripts that use rsync for backup and luks for encrypting that backup, plus cron for backups to always-attached drives (this is on Linux, would probably be significantly harder if you use Windows).
Yeah I use Linux and am comfortable with command line.
I am not looking for continuous backup though. I would occasionally add stuff to backup - like every few months or so. I also want the incremental backup part - not sure if encrypting backed up data using luks would allow incremental addition later on.
I will check rsync and luks. If you have any resources, please feel free to post here.
not sure if encrypting backed up data using luks would allow incremental addition later on.
It does, luks just adds an extra command for mounting the drive, after that it's a normal mounted filesystem where you can add, delete, edit as you see fit.
Here is a sensible guide to setting up an external drive with luks: https://comfy.guide/client/luks/
Here's a resource that explains rsync's exclude option and many of the core workings of rsync: https://linuxvox.com/blog/using-rsync-filter-to-include-exclude-files/
Have an example from my own backup script:
sudo cryptsetup luksOpen /dev/sdd backup
sudo mount /dev/mapper/backup BACKUP
time rsync --archive --progress --delete \
--filter="protect /VAULT_GO" \
--exclude=/.VAULT_GO-01_encrypted \
--exclude=/.VAULT_GO-02-nobackup_encrypted \
--exclude=/Movies \
--exclude=/Games \
~/DATA_DRIVE/ ~/BACKUP/
Here's a resource that helped me refresh what rsync's "filter" option does: https://superuser.com/questions/161766/how-to-exclude-rsync-excludes-from-delete.TBH I need to look into that more, it's been a long while since I wrote that script and there's probably more things you can do with the filter option.
Not sure if your intention is to keep things local or not, but I’ve previously used backblaze personal backup. It’s really good and checks a lot of boxes.
I don’t know if it fits your use case, but it’s a great solution at a decent price.
ZFS + zfs_autobackup on one or more external drives. Does encryption, can be imported to a new machine, even offers versioning via snapshots.
For long term spinning disks generally does better than flash.
This would require me to have a ZFS partition first and transfer my data on it, right?
Right now I am not using ZFS, but for next OS reinstall, I might try it. Thank you.