rsnapshot
A software to create backups on local or remote computers.
rsnapshot does backups with hardlinks. That saves a lot of space for incremental backup. The file system on the backup target has to support hard links (in Linux e.g. ext4, btrfs).
You should install rsnapshot on the server and do pull-style backups, although push-style backups are also possible.
config
- /etc/rsnapshot.conf
################################################# # rsnapshot.conf - rsnapshot configuration file # ################################################# # # # PLEASE BE AWARE OF THE FOLLOWING RULES: # # # # This file requires tabs between elements # # # # Directories require a trailing slash: # # right: /home/ # # wrong: /home # # # ################################################# config_version 1.2 snapshot_root /media/170a2bcd-d9b3-4d95-a5b2-4293ca53547c/Backups/ #no_create_root 1 cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync #cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger #cmd_du /usr/bin/du #cmd_rsnapshot_diff /usr/bin/rsnapshot-diff verbose 3 loglevel 2 logfile /var/log/rsnapshot.log lockfile /var/run/rsnapshot.pid #include_file /path/to/include/file #exclude_file /path/to/exclude/file #link_dest 0 #sync_first 0 ######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # ######################################### retain daily 7 retain weekly 4 retain monthly 24 ############################### ### BACKUP POINTS / SCRIPTS ### ############################### # LOCALHOST backup /etc/ localhost/ backup /mnt/data/Management/ localhost/ backup /mnt/data/Team/ localhost/
- crontab
### rsnapshot 0 1 * * * rsnapshot daily 0 3 * * 7 rsnapshot weekly 0 5 * * 7 run-if-today L && rsnapshot monthly
Backups with btrfs snapshots
- /usr/local/bin/rsnapshot_btrfs_cp
#!/bin/sh # Arg 1: -al # Arg 2: /testbtrfs/backups/hourly.0 # Arg 3: /testbtrfs/backups/hourly.1 btrfs subvolume snapshot $2 $3
- /usr/local/bin/rsnapshot_btrfs_rm
#!/bin/sh # Arg 1: -rf # Arg 2: /testbtrfs/backups/hourly.4/ # echo 1: $1 2: $@ # Try to delete the given path with btrfs subvolume delete first # if this fails fall back to normal rm if [ "$1" = "-rf" -a "$3" = "" ]; then # "trying to delete with btrfs" btrfs subvolume delete $2 error=$? if [ $error -eq 13 ]; then # EC 13 => The directory specified is no subvolume rm $@ elif [ $error -ne 0 ]; then echo Error while deleting with btrfs $? fi else rm $@ fi
You have to configure the commands cmd_cp
and cmd_rm
in the rsnapshot.conf
accordingly.
Databases
You should use backupninja for that.
Cloud
You can use rclone to copy files to the cloud.