Setup Autobackup on Linux

Updated on November 21, 2023
Setup Autobackup on Linux header image

Introduction

Autobackup is an automated backup system which retrieves data to backup from a remote server and stores it on the server. In our case, we can use a Vultr Storage Instance with huge amounts of disk space and backup all our Compute Instances through that in order to prevent any data loss.

Requirements

  • rsync

Installation

You can install AutoBackup using git easily on your system. Go ahead and clone the repository:

mkdir /opt/
git clone https://github.com/fbrandstetter/Autobackup.git /opt/autobackup/

Configuration

Before we can start backing up data from our Compute Instances, we need to gain access to them. For that, we'll create a SSH key on our Storage Instance and grant access from it to all Compute Instances. Next, we'll start with creating the key:

ssh-keygen

As of now, we have to copy our public key to the Compute Instances. Open the following file ~/.ssh/id_rsa.pub and copy it to the Compute Instances' ~/.ssh/authorized_keys:

cat ~/.ssh/id_rsa.pub

If you don't work with public keys to gain access to your Compute Instances, you have to set the authorized keys file in the SSH server config first. Open the following file /etc/ssh/sshd_config on the Compute Instances and uncomment the following line:

AuthorizedKeysFile %h/.ssh/authorized_keys

Connection

Once you added the SSH key of the Storage Instance on all Compute Instances, you can go ahead with trying the connection to one of your Compute Instances ( in order to avoid any issues later, make sure the connection to all servers works ):

ssh root@COMPUTE_INSTANCE_1

You should be able to login without typing in any password nor something else.

Configure Autobackup

Autobackup requires some config to function properly as well. Open the /opt/autobackup/backup.sh file, as any config is being stored in the bash file itself. Take a look at the following lines and adapt them to fit your needs:

BACKUPDIR=""
PASSWORD=""
FREEUPSPACE=""
MAXUSED=""
  • BACKUPDIR: This is the folder in which all backups will be stored.
  • PASSWORD: This is the password being used to encrypt the backups.
  • FREEUPSPACE: Defines whether the script should delete old backups if the disk is full or not.
  • MAXUSED: Defines what the lowest disk size is allowed to be until it stops backuping or starts deleting old ones.

Add Server

All servers to backup are being stored in the /opt/autobackup/serverlist.template file using the following format:

<SERVER_HOSTNAME OR IP>|<USERNAME FOR AUTHENTICATION>|<EXCLUDE LIST>

Global Excludes

By default, Autobackup automatically backups the entire server, that means it tries to download / recursive. Because some people don't need the entire system to be backuped, you can add global excludes ( which apply to any server ) and server-specific excludes, which apply to specific servers. All global excludes are being stored in the file called /opt/autobackup/default-excludes.template and the file is prefilled with /proc and /dev, you can add new folders and file extensions there by simply adding new lines:

/proc
/dev

Server-specific Excludes

Because most people are running different types of servers ( e.g. Webservers and Database servers ) there are unique exclude lists for each server. The format of the server-specific exclude files looks the same like the global ones. You can create a new file and call it to the EXCLUDE_LIST you set for the server in the server-list. If you don't want to have any exclude-list specified for this server, set it to empty in the server-list. The file called empty was already downloaded by the repository clone - this file is empty in order to have no directories or anything else excluded, while the default excludes still take effect.

Restore Data

In an ideal environment, we're not even supposed to restore our encrypted backups. Although when face issues and we need to retrieve our backuped data, it's quite easy to restore it. You can restore any backup file using the following command:

openssl aes-256-cbc -d -salt -in BACKUP.tar.aes -out BACKUP.restored.tar
mkdir backup/
tar -xvf BACKUP.restored.tar backup/

Replace the BACKUP.tar.aes with the filename of the desired backup to restore. BACKUP.restored.tar will be the file name of the unencrypted archive. In the example above, we've already done the next steps, which are:

  • Create a new folder
  • Restore the unencrypted archive to the folder

Conclusion

Autobackup is a fully automated and quite smart backup script which handles the backups automatically for us and the huge plus is, the data is being encrypted by a password which can be nearly unlimited long. That means, as long you keep your password secure and it's long enough, nobody is able to touch your data in a timely manner. Happy Hacking!