For my personal project, I use Cloudflare to set up DNS records.
If you are also using Cloudflare and need a backup of your DNS records, you can use the following tutorial to download your data and store it in a secure location for future reference. All you need is an npm module and a command line.
Prerequisites
Set up
The first thing we’re going to do is use a tool called cloudflare-backup from npm.
To set this up run the following commands in your terminal:
$ npm install -g cloudflare-backup
Script setup
Now that we have confirmed we have the prerequisites for the backup, create a file called cf-backup.sh
in your chosen folder.
Inside that file add the following script:
#!/bin/bash
[email protected] CF_TOKEN=abc123 cf-backup > zones.bind.txt
Account setup
To run this with your account
- Log in to Cloudflare and click on your name (in the top right) and click My Profile
- Go to the API Tokens tab
- Click to view your Global API Key
- Copy your global API key into
cf-backup.sh
replacingabc123
- Replace
[email protected]
incf-backup.sh
with your Cloudflare account email address
Run the script
Now you can run the script to retreive a copy of your records:
$ sh cf-backup.sh
A new file zones.bind.txt
should appear in your folder with all of your DNS records.
Future improvements
I am looking to update this in the future to closer match my Route 53 DNS Backups utilising one file per zone, Cloudflare API Tokens with just “read” access, and a date stamped folder.