USB Full backup
Daily backup to stick
Daily backup of your cores hot keys and operational files to a local or remote usb stick with rsync.
Source Disk Setup
Log in and open a root shell
Tail syslog before inserting your drive. This will print some information that can help you identify the disk.
Attach the external drive and take note of the assigned device node. eg. /dev/sdb
If the target drive is lacking partition tables syslog may not print the device node assignment. fdisk -l however will.
You can also print a list of drives with fdisk.
Example output:
In my case it is /dev/sdb. Yours may be /dev/sdc, /dev/sdd or so on. /dev/sda is usually the system drive. Do not format your system drive by accident.
Baremetal Core
Create an new GUID Partition Table (GPT)
This will wipe the disk
Type ? to list options
Enter o for new GPT
Enter n to add a new partition and accept defaults to create a partition that spans the entire disk.
Enter w to write changes to disk and exit gdisk.
Your new partition can be found at /dev/sdb1, the first partition on sdb.
Optionaly Check the drive for bad blocks (takes a couple of hours)
Format the partition as ext4
Make the usb backup drive always available to our backup job. Since it will be holding sensitive data we will mount it in a way where only root and the user cardano-node runs as can access.
Run blkid and pipe it through awk to get the UUID of the filesystem we just created.
Example output:
For myself the UUID=55e3346a-a7ba-4b60-bd68-fa8f86b8f8ca
Drop back into your regular users shell.
Add mount entry to the bottom of fstab adding your new partitions UUID and the full system path to your backup folder. For this guide we set the path to a folder we will create in our home directory. /home/username/core-backup
Replace user with the user cardano-node runs as.
nofail allows the server to boot if the drive is not inserted.
Create the mountpoint & set default ACL for files and folders with umask.
Mount the drive.
Take ownership of the filesystem.
Reboot the server and confirm the system mounted the drive at boot.
Remote core to local machine FAT32
Create an new GUID Partition Table (GPT)
This will wipe the disk
Type ? to list options
Enter o for new GPT
Enter n to add a new partition and accept defaults to create a partition that spans the entire disk.
Enter w to write changes to disk and exit gdisk.
Set the msftdata data on the exFAT partition (also taken from Thawn's answer). Since we have only one partition, apply the command to partition 1
Your new partition can be found at /dev/sdb1, the first partition on sdb.
Optionaly Check the drive for bad blocks (takes a couple of hours)
Mount the drive at boot
We want this drive to always be available to our backup job. Since it will be holding sensitive data we will mount it in a way where only root and the user cardano-node runs as can access.
Run blkid and pipe it through awk to get the UUID of the filesystem we just created.
Example output:
For me the UUID=7FFD-F67C
Drop back into your regular users shell.
Add mount entry to the bottom of fstab adding your new partitions UUID and the full system path to your backup folder. For this guide we set the path to a folder we will create in our home directory. /home/username/core-backup
Identify user id and group id and substitute for in fstab.
nofail allows the server to boot if the drive is not inserted.
Create the mountpoint & set default ACL for files and folders with umask.
Scheduled Backups
Backup what you want with Rsync as frequently as you want.
Create a script that will only backup if the drive is mounted.
Create an rsync-exclude.txt file so we can rip through and grab everything we need and skip the rest.
Setup Cron
Open crontab and add the rule to the bottom.
Optional backup alias with mount check
Create an alias in .bashrc or .adaenv if present for manual alias to backup the core.
Add the following at the bottom edit the paths and exclude as you see fit and source the changes.
Now if you want to manually backup the hot keys just type core-backup. For example after generating a new KES pair and node.cert
Last updated