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
gdisk/dev/sdb
Type ? to list options
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
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)
badblocks-c10240-s-w-trandom-v/dev/sdb
Format the partition as ext4
sudomkfs.ext4-ncore-backup/dev/sdb1
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.
sudoblkid/dev/sdb1|awk-F'"''{print $4}'
Example output:
55e3346a-a7ba-4b60-bd68-fa8f86b8f8ca
For myself the UUID=55e3346a-a7ba-4b60-bd68-fa8f86b8f8ca
Drop back into your regular users shell.
exit
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
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
sudogdisk/dev/sdb
Type ? to list options
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
Enter o for new GPT
Enter n to add a new partition and accept defaults to create a partition that spans the entire disk.
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
sudo parted /dev/sdb
set1msftdataonq
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)
badblocks-c10240-s-w-trandom-v/dev/sdb
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.
sudoblkid/dev/sdb1|awk-F'"''{print $4}'
Example output:
7FFD-F67C
For me the UUID=7FFD-F67C
Drop back into your regular users shell.
exit
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.
Backup what you want with Rsync as frequently as you want.
Create a script that will only backup if the drive is mounted.
nano $HOME/core-backup-script.sh
#!/bin/bash# Local SourceSOURCE="<path to your NODE_HOME>"# Remote Source#REMOTE_SOURCE="-i -e "ssh -i $HOME/.ssh/<private key>" <user>@<server name or IP>:$NODE_HOME"DESTINATION="<Path to your mounted USB stick>"ifgrep-qs"$HOME/core-backup"/proc/mounts; thenecho"Executing Rsync"rsync-av--exclude-from="exclude-list.txt" $SOURCE $DESTINATIONelseecho"Core backup drive is not mounted."fiexit0
chmod+x $HOME/core-backup-script.sh
Create an rsync-exclude.txt file so we can rip through and grab everything we need and skip the rest.
# Replace with correct path to your pools working directory## run 3am every day03*** $HOME/core-backup-script.sh
Optional backup alias with mount check
Create an alias in .bashrc or .adaenv if present for manual alias to backup the core.
cd; nano.bashrc
Add the following at the bottom edit the paths and exclude as you see fit and source the changes.
ifgrep-qs'$HOME/core-backup '/proc/mounts; then echo "Core backup drive is mounted. Executing Rsync"; alias core-backup="rsync -a --exclude={"db/","scripts/","logs/"} $NODE_HOME $HOME/core-backup/"
elseecho"Core backup drive is not mounted."fiexit0
source.bashrc
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