Creating backups with Restic and Object Storage
Restic is a backup tool that allows you to back up your Linux, Windows, Mac or BSD machines and send your backups to repositories via different storage protocols, including S3 (Object Storage).
In this tutorial you learn how to backup a Scaleway Instance running on Ubunutu 20.04 using Restic and Object Storage.
You may need certain IAM permissions to carry out some actions described on this page. This means:
- You have an account and are logged into the Scaleway console
- You have configured your SSH key and your API key
- You have a Scaleway Instance running on Ubuntu Focal Fossa (20.04)
- You have installed and configured the AWS-CLI to use with Scaleway Object Storage
- You have created an Object Storage bucket
- Connect to your Instance with SSH. In a terminal run:
- Update the system and upgrade the software already installed on the Instance.
apt update && apt upgrade -y
- Install Restic.
apt-get install restic
- Ensure the installation was successful by checking the version.
A repository is the storage space where your backups will be hosted. In this tutorial, we will use Scaleway Object Storage buckets to host our backups.
Set up your environment variables, if you have not done so yet. Replace
$SCW_SECRET_KEYby their corresponding values.export AWS_ACCESS_KEY_ID=$SCW_ACCESS_KEYexport AWS_SECRET_ACCESS_KEY=$SCW_SECRET_KEY
Initialize the repository using your bucket’s endpoint as a backend. Your bucket endpoint can be found in the Bucket settings tab under Bucket Information.restic -r s3:https://s3.fr-par.scw.cloud/<bucket_name> init
Enter a password for the repository and repeat it when prompted.enter password for new repository:enter password again:Important:
The password is required to access the repository. If you lose the password, your data will be irrevocably lost.Tip:
Restic requests you to enter the password every time you perform actions on your repository. If you have configured automatic backups, you might want to set up an environment variable for your password.
An output displays informing the name and path of your repository.
created restic repository da8e38a165 at s3:https://s3.fr-par.scw.cloud/<bucket_name>
Run the command below to create a backup. Include the path to your repository (in this example, the path is the endpoint of your bucket), and the path of the directory you wish to back up (
~/<my-directory>in the example).restic -r s3:https://s3.fr-par.scw.cloud/<bucket_name> backup ~/<my-directory>
The command above creates a snapshot of your directory and sends it to your repository. The snapshot is stored as an object in your bucket.Tip:
By default, the backups you create are stored using
STANDARDstorage class. If you want to use a different storage class, you can add the
-o s3.storage-class=<STORAGE_CLASS>option to your command. For example:
restic -r s3:https://s3.fr-par.scw.cloud/<bucket_name> backup -o s3.storage-class=ONEZONE_IA ~/<my-directory>
Enter the password for the repository when prompted.enter password for repository:
If the operation is successful, you will see the following output:repository da8e38a1 opened successfully, password is correctcreated new cache in /root/.cache/resticFiles: 1 new, 0 changed, 0 unmodifiedDirs: 1 new, 0 changed, 0 unmodifiedAdded to the repo: 732 Bprocessed 1 files, 22 B in 0:06snapshot 15a39fd5 savedTip:
Restic does not offer a built-in tool for automated backups. Restic recommends using tools like systemd and cron to schedule backup runs. Learn more on the Restic documentation.
Run the following command to verify that the backup was successful:aws s3api list-objects --bucket <bucket_name>
Alternatively, you can access your bucket via the Scaleway console. You can find the snapshots of your directory in the
Retrieve a list of your snapshots to identify the ID of the snapshot you want to restore. Make sure you specify the path to your repository in the command.restic snapshots -r s3:https://s3.fr-par.scw.cloud/<bucket_name>enter password for repository:repository da8e38a1 opened successfully, password is correctID Time Host Tags Paths---------------------------------------------------------------------------------15a39fd5 2022-04-06 14:39:25 scw-jovial-keldysh /root/my-directory20eed69e 2022-04-06 15:09:01 scw-jovial-keldysh /root/my-directory---------------------------------------------------------------------------------2 snapshots
Run the command below to restore your backup. Specify the path to your repository and to the target directory.restic -r s3:https://s3.fr-par.scw.cloud/<bucket_name> restore 15a39fd5 --target ~/<my-directory>
If the operation is successful, you see the following output:enter password for repository:repository da8e38a1 opened successfully, password is correctrestoring <Snapshot 15a39fd5 of [/root/my-directory] at 2022-04-06 14:39:25.024340615 +0000 UTC by root@scw-jovial-keldysh> to /root/my-directory
Refer to the Restic documentation to discover other configuration options and tutorials.