Most free cloud storage is limited to 5GB or less. Even Google Drive is limited to 15GB. While not heavily advertised, IBM offers free accounts with a whopping 25GB of cloud storage for free. This is not a limited time offer, and you don’t have to provide a credit card. It’s absolutely free! Better yet, since it’s S3 compatible, most of the S3 tools available for backups should work fine.
This article will show you how to use restic for encrypted backups onto this free storage. Please also refer to this previous Magazine article about installing and configuring restic. Let’s get started!
Creating your free IBM account and storage
Head over to the IBM cloud services site and follow the steps to sign up for a free account here: https://cloud.ibm.com/registration. You’ll need to verify your account from the email confirmation that IBM sends to you.
Then log in to your account to bring up your dashboard, at https://cloud.ibm.com/.
Click on the Create resource button.
Click on Storage and then Object Storage.
Next click on the Create Bucket button.
This brings up the Configure your resource section.
Next, click on the Create button to use the default settings.
Under Predefined buckets click on the Standard box:
A unique bucket name is automatically created, but it’s suggested that you change this.
In this example, the bucket name is changed to freecloudstorage.
Click on the Next button after choosing a bucket name:
Continue to click on the Next button until you get the the Summary page:
Scroll down to the Endpoints section.
The information in the Public section is the location of your bucket. This is what you need to specify in restic when you create your backups. In this example, the location is s3.us-south.cloud-object-storage.appdomain.cloud.
Making your credentials
The last thing that you need to do is create an access ID and secret key. To start, click on Service credentials.
Click on the New credential button.
Choose a name for your credential, make sure you check the Include HMAC Credential box and then click on the Add button. In this example I’m using the name resticbackup.
Click on View credentials.
The access_key_id and secret_access_key is what you are looking for. (For obvious reasons, the author’s details here are obscured.)
You will need to export these by calling them with the export alias in the shell, or putting them into a backup script.
Preparing a new repository
Restic refers to your backup as a repository, and can make backups to any bucket on your IBM cloud account. First, setup the following environment variables using your access_key_id and secret_access_key that you retrieved from your IBM cloud bucket. These can also be set in any backup script you may create.
$ export AWS_ACCESS_KEY_ID=<MY_ACCESS_KEY> $ export AWS_SECRET_ACCESS_KEY=<MY_SECRET_ACCESS_KEY>
Even though you are using IBM Cloud and not AWS, as previously mentioned, IBM Cloud storage is S3 compatible, and restic uses its interal AWS commands for any S3 compatible storage. So these AWS keys really refer to the keys from your IBM bucket.
Create the repository by initializing it. A prompt appears for you to type a password for the repository. Do not lose this password because your data is irrecoverable without it!
restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET init
The PUBLIC_ENDPOINT_LOCATION was specified in the Endpoint section of your Bucket summary.
$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage init
Now it’s time to backup some data. Backups are called snapshots. Run the following command and enter the repository password when prompted.
restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET backup files_to_backup
$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage backup Documents/ Enter password for repository: repository 106a2eb4 opened successfully, password is correct Files: 51 new, 0 changed, 0 unmodified Dirs: 0 new, 0 changed, 0 unmodified Added to the repo: 11.451 MiB processed 51 files, 11.451 MiB in 0:06 snapshot 611e9577 saved
Restoring from backups
Now that you’ve backed up some files, it’s time to make sure you know how to restore them. To get a list of all of your backup snapshots, use this command:
restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET snapshots
$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage snapshots Enter password for repository: ID Date Host Tags Directory ------------------------------------------------------------------- 106a2eb4 2020-01-15 15:20:42 client /home/curt/Documents
To restore an entire snapshot, run a command like this:
restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage restore snapshotID --target restoreDirectory
$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage restore 106a2eb4 --target ~ Enter password for repository: repository 106a2eb4 opened successfully, password is correct restoring <Snapshot 106a2eb4 of [/home/curt/Documents]
If the directory still exists on your system, be sure to specify a different location for the restoreDirectory. For example:
restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage restore 106a2eb4 --target /tmp
To restore an individual file, run a command like this:
restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET restore snapshotID --target restoreDirectory --include filename
$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage restore 106a2eb4 --target /tmp --include file1.txt Enter password for repository: restoring <Snapshot 106a2eb4 of [/home/curt/Documents] at 2020-01-16 15:20:42.833131988 -0400 EDT by curt@client> to /tmp
[EDITORS NOTE: Updated at 1647 UTC on 24 February 2020 to correct a broken link.]