Seconding backuppc, it's an old classic made of Perl, but it is not only agentless, it also dedupes files in a central store and allows user controlled restores if you wish.
It can also handles laptops and machines that may not be on, and dynamic schedules.
It is also easy to customize what every remote command is/does, so hacking in things like ssh force_command for passwordless authentication to a backup operator account can be done with relative ease.
It requires a some elbow grease and a large measure of Knowing What You Are doing, but the benefits are totally worth it, IMO.
You need two things:
BackupPC (https://backuppc.github.io/backuppc/) is very powerful.
Borg is pretty solid. I prefer it to Time Machine and it works in a sort of similar way (you host a Borg server somewhere and run a piece of client software that pushes backups).
If you're in need of something centrally managed for many users, the open source field gets a little more complicated. Check out something like BackupPC (which uses SSH and rsync and can centrally manage a bunch of machines' backups). There are others (Bacula and Amanda come to mind), but they didn't fill my needs last time I looked into them.
Edit: If you do go the roll-your-own method with rsync, as others have suggested, this is a very good read.
BackupPC doesn't have to use root to connect to the remote hosts.
You can just overwrite the RsyncSshArgs settings. (ex : $sshPath -l youruser -p 1234 -o StrictHostKeyChecking=no
) either on the host or global config.
kbackup
kup-backup
Kbackup is all you need.
Check out CUBIC. Its brilliant. Great GUI and the Developer is always online for any queiries. Create your own gui. Drop and drag your confs from your running system to the Distro your creating.
https://launchpad.net/~cubic-wizard
https://github.com/teejee2008/timeshift
backintime-qt
deja-dup
luckybackup
Skolelinux Backup system
I recommend BackupPC. Ignore the horrible name, the software's really solid.
It uses SSH and rsync to poll and start backups, and doesn't require an agent or service be installed. (on *NIX machines, at least. Windows needs cygwin-rsyncd installed)
BackupPC (https://backuppc.github.io/backuppc/) is badass, GPL, and free. You should be able to pick folders for backup, but I don't think you can pick individual files. Compresses and deduplicates. Admin or user can restore individual files from backup or restore everything.
>BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. BackupPC is highly configurable and easy to install and maintain.
For file based (i.e. not bare metal restore) backups my vote is for BackupPC.
I use it for my homelab to back up about 30 Linux VMs and (with the help of DeltaCopy) one Windows machine. I like its deduplication feature, scheduling and ability to customise everything.
Time Machine can write to an SMB share. Do you want to manage the Time Machine backups from the server console? In that case I'm not sure. But if we're just talking about backing up data, I don't know why you need Time Machine if you are implementing a versioning backup system anyway. Couple options:
https://www.urbackup.org/index.html or https://backuppc.github.io/backuppc/
Powerful backup software there with web interface, although they are free and only community supported.
Doesn't hurt to spin up a different backup tool while you wait for a response. Also you might be better off posting to the UrBackup community forum (https://forums.urbackup.org/).
Have you tried BackupPC? https://backuppc.github.io/backuppc/
BackupPC - https://backuppc.github.io/backuppc It's not the easiest, but once you get it working, it works. And you should be able to just point it to "/". You could also point it to as many different folders as you like as long as you have Read access.
> backuppc (https://backuppc.github.io/backuppc/) and the dockerized version (https://github.com/adferrand/docker-backuppc).
ha - that's interesting. you know - I had this bookmarked recently with a note to look into it. Only because I use dnsrobocert and it is really cool project - so I looked at what else adferrand packages and backuppc was there. I guess that's a sign from the universe.
LAN Option 1 - BackupPC (https://backuppc.github.io/backuppc/) - compress, deduplicates, visibility, control, but does not encrypt out of the box. I believe you could pair it with rclone crypt in a bind mount pointed at your server storage if encryption at this stage is important. You could also store it unencrypted locally and use rclone crypt to backup the repo to a cloud provider, encrypted.
Lan Option 2 - Restic or Borgbackup (non-centralized, configured on each client pointing to one or more repos on the server). You get the encryption, compression, and deduplicating in the client, and you can use rclone to send the repo to most cloud providers. Duplicacy could also fit into option 2 in place of restic or borgbackup - the cli version is easy enough, but you could pay for a GUI.
And make it automatic backups if you can. Humans are forgetful, and you don't want to realize that on that day, you forgot to make a backup before a critical change. Bonus points if you also have multiple backups that go back days/weeks for problems that aren't immediately apparent.
I have a BackupPC instance that does daily backups of Pfsense's /conf over SSH, along with all other machines.
BackupPC supports pull backups via SSH (rsync)/SMB/Tar. I use it for backing up Windows and Linux machines. Never had to touch it after initial configuration. Works like a charme. You can use an iocage plugin for FreeNAS/FreeBSD.
There are also other popular options like i.e. Bacula, but they work different (client-server model).
I went through the same evaluations and decided on BackupPC in the end. Granted it a little more to set up on the server side but there is a docker image to simplify the process. The main advantage for me was simplicity on the client sides and backing up multiple clients simultaneously with deduplication across all the clients. This leads to some incredible feats of storage efficiency..
If this is just for backups, I don't know that NextCloud is the option you want. There are too many negative reviews and comments that the mobile apps fail to sync, and you don't necessarily have reporting like you would a proper backup tool. Plus, syncing isn't really backing up. There may not be a single ideal application for backing up mobile and desktops.
One thought that may get you most of the way there. BackupPC as the server (https://backuppc.github.io/backuppc/) which is easy enough on the PCs. For the Android phones, you could probably install Termux, SSH Server, and a VPN client (like ZeroTier), have SSH server listen only on the ZeroTier interface; point BackupPC to use rsync on the Android hosts (running SSH servers) and that should do the trick. the iOS devices would presumably need a different scheme.
Another option is to use rsync on a schedule from all client devices (including iphones) to push data from the devices to the server - this is pretty foolproof, but sync is not a backup and you would probably want to add another layer to the data protection - for example, zfs snapshots to allow versioning and protection against accidental deletion. If ZFS doesn't cut it for you, a dedicated versioning/deduplicating tool like Borg, Restic, Duplicacy (these can encrypt as well) or BackupPC, URBackup, or RSnapshot could be options.
I'm more used to Linux environments but I recommend backuppc
It's free, open source, and well maintained. The interface is intuitive. It can run on a distributed storage system such as Ceph, with 3 or 4 servers if you really want to go paranoid and RAID isn't enough for you :-)
EDIT : .md formatting
I use BackupPC, which has worked great. It can backup anything that has rsync, and does great de-duplication. I have ~40 computers and 50TB+ of data with hundreds of incrementals, and the whole lot is just under 15TB.
You can try https://www.urbackup.org/ or https://backuppc.github.io/backuppc/ in a VM and see which one you like better then implement it. Use Let's Encrypt for SSL. I can't provide any other opinion.
Consider using BackupPC. If you are familiar with docker there is a container for it.
It will not only de-duplicate your data but also compress it and can make huge savings on regular data accrual.
We use BackupPC for backing up servers and Linux desktop systems. Layers on rsync (amongst other protocols). Takes a little time to set up, but works really well.
Have you looked at BackupPC? It can pull over SMB or rsyncd. Works with Windows and Linux, lots of configuration options. I believe there are rsyncd packages for Cygwin, but I suspect you could configure rsyncd to run under WSL to make life a little cleaner/easier. https://backuppc.github.io/backuppc/
Far from the only options but here are two:
If you want to schedule backups from the individual machines using the NAS just as storage, Rsync Time Machine is a pretty elegant cross-platform option: https://github.com/laurent22/rsync-time-backup
>This script offers Time Machine-style backup using rsync. It creates incremental backups of files and directories to the destination of your choice. The backups are structured in a way that makes it easy to recover any file at any point in time. It works on Linux, macOS and Windows (via WSL or Cygwin).
If you want something centralized and run from the NAS, BackupPC is good (https://backuppc.github.io/backuppc/).
>BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. BackupPC is highly configurable and easy to install and maintain.