<< Back to tutorials

How to Create a Simple SFTP Backup Script Using SSH Keys

Published {$created} by Carsten Blum


In this tutorial I'll show you how to create a fast and easy file backup solution on Linux, UNIX, or even Mac OS, using just ftpGrid and some super simple terminal commands. We don't manage stuff like retention or partial backup in this script, event though it could easily be extended to have such features. I'll go through:

  • Creating a secure SSH key for connecting with the SFTP edge service.

  • Setting up a new account to use the key

  • Testing your SFTP connection

  • Writing a script to zip and upload a directory

In this tutorial I assume a certain knowledge of using a basic terminal, and if a command is missing being able to perform an apt install missing-command command.


Before starting this tutorial, we recommend you create an account with ftpGrid, which is a simple process outlined in our getting started with FTP/SFTP guide. If your are in doubt if managed FTP/SFTP hosting is for you, you can read our guide to ftpGrid's managed hosting. If you need help creating your SSH keys, follow our SSH key creation tutorial.



Generate an ssh-ed25519 Key Pair

SSH keys are the modern, secure way to authenticate with servers – especially in automated scripts. I would always recommend against using password when possible.

Open your terminal and run:

ssh-keygen -t ed25519 -C "your_email@example.com"
  • Press Enter to accept the default file location (~/.ssh/id_ed25519)

  • Optionally add a passphrase (leave blank for non-interactive scripts)

This gives you:

  • ~/.ssh/id_ed25519 → your private key (keep it safe!)

  • ~/.ssh/id_ed25519.pub → your public key



Create Your ftpGrid Account and Upload Your Public Key

  • Sign up or log in to https://app.ftpgrid.com/auth/login

  • Go to your account dashboard at https://app.ftpgrid.com/app/ftpaccounts

  • Create a new FTP Account. "FTP Account" is just our word for an edge service account and is used for both FTP and SFTP.

    ftp accounts

    You can view the contents of you public key by running in bash:


    cat ~/.ssh/id_ed25519.pub

  • Enter a meaningful name like backup

  • Copy paste the contents from ~/.ssh/id_ed25519.pub into the field "SSH Public key (usually id_rsa.pub)"

  • Save the user

  • Please note the full username required to login uses you account prefix.backup



Test the SFTP Connection in Your Terminal

Try connecting to the server manually to confirm everything is set up correctly, where edgeN is your assigned edge server, for instance edge7.ftpgrid.com:

sftp -i ~/.ssh/id_ed25519 prefix.backup@edgeN.ftpgrid.com

You should land in the remote shell without being asked for a password. Try running ls or put testfile.txt to test upload capability.

If you are prompted for a password, you might have forgotten the account prefix.



Write a Simple Bash Script for Automated Backups

Here’s a minimal bash script which creates our backup:

  • Compresses a directory into a .zip file

  • Adds today’s date to the filename

  • Uploads the file to your ftpGrid account via SFTP

Make sure to replace:

  • SRC_DIR with the directory you need to backup

  • SFTP_USER with the user you created

  • SFTP_HOST with your assigned edge service.

#!/bin/bash

# CONFIG
SRC_DIR="/path/to/your/data"

BACKUP_NAME="backup-$(date +%Y-%m-%d).zip"
TMP_PATH="/tmp/$BACKUP_NAME"
SFTP_USER="prefix.backup"
SFTP_HOST="edgeN.ftpgrid.com"
SSH_KEY="$HOME/.ssh/id_ed25519"
REMOTE_DIR="/backups"

# Compress the directory
zip -r "$TMP_PATH" "$SRC_DIR"

# Upload to ftpGrid
sftp -i "$SSH_KEY" "$SFTP_USER@$SFTP_HOST" << EOF
mkdir $REMOTE_DIR
cd $REMOTE_DIR
put "$TMP_PATH"
bye
EOF

# Optional: Remove local zip after upload
rm "$TMP_PATH"

Make the script executable and do a test run:

chmod +x backup-to-ftpgrid.sh
./backup-to-ftpgrid.sh

Then you can run it manually or add it to a daily cron job for automated backups.

Without going into too much detail, a cronjob running this backup daily at 4.00(AM) would look something like this:

0 4 * * * /path/to/backup-to-ftpgrid.sh > /dev/null 2>&1



Wrapping Up

With SSH keys and a few lines of bash, you’ve created a secure, automated backup workflow using SFTP. No more typing passwords. No more forgetting to upload your files. Just simple, reliable backups — every day.

Need help? Reach out to us using our contact page, or through our build in helpdesk, we’re happy to assist. If you haven't signed up yet you can do so here.



Signup now
© 2025 ftpGrid

ftpGrid ApS
Branebjerg 24
DK-5471
Gamby
Denmark

Looking for an all-in-one time tracking, timesheet, and invoicing solution - visit our sister company Nureti at https://nureti.com.