VPS Snaps

Learn

Back up any server, on any cloud

Practical guides for the people who run their own servers. Every command was run on a real server or checked against the provider's own documentation, and each guide says which.

Back up your first server free, forever. No credit card required.

We only use your email to create your account. See our Privacy Policy.

Your credentials are encrypted with AES-256-GCM, your backups never live on our storage, and our GDPR data processing agreement is public.

Cloud snapshots

Take, schedule and restore snapshots on DigitalOcean, Hetzner, Vultr, Linode, AWS, Google Cloud and Azure, and know what they don't cover.

All cloud snapshots

DigitalOcean snapshots: take, restore and automate Droplet snapshots

Take a Droplet snapshot in the control panel or with doctl, restore it in place or to a new Droplet, and automate snapshots with cron and a retention count.

9 min read

Hetzner Cloud snapshots: create, restore and automate with hcloud

Create Hetzner Cloud snapshots in the Console or with hcloud, label and describe them, rebuild or clone a server from one, and rotate them on a schedule.

8 min read

Vultr snapshots: create, restore and automate with vultr-cli

Take Vultr snapshots in the customer portal, with vultr-cli or API v2, restore them to the same or a new instance, and rotate them on a schedule.

7 min read

Linode backups and snapshots on Akamai Cloud: enable, snapshot and restore

Enable the Linode Backups service, take a manual snapshot in Cloud Manager or with linode-cli, and restore it to the same Linode or a new one.

7 min read

How to back up EC2 instances with EBS snapshots and AMIs

Take EBS snapshots and AMIs from the console and the AWS CLI, schedule them with Amazon Data Lifecycle Manager, copy them to another Region, and restore a volume, a root disk or a whole instance.

9 min read

How to back up Amazon Lightsail instances with snapshots

Take manual Lightsail snapshots, turn on automatic daily snapshots and set their time, restore to a new or bigger instance, copy to another Region and export to EC2, from the console and the AWS CLI.

7 min read

How to back up Google Compute Engine disks with snapshots

Create standard, archive and instant snapshots with the console and gcloud, schedule them with snapshot schedules, choose where they are stored, and restore a disk or a whole VM.

8 min read

How to back up Azure VMs with disk snapshots and Azure Backup

Create full and incremental managed disk snapshots with the portal and the Azure CLI, copy them to another region, restore a disk or a VM, and schedule VM backups with Azure Backup policies.

9 min read

Database backups

Dump, restore and automate PostgreSQL, MySQL, MongoDB, Redis, SQLite, Elasticsearch, ClickHouse, InfluxDB, CouchDB, Neo4j, Qdrant and Meilisearch: on servers, replicas, Railway and Render, straight to S3, and to a point in time.

All database backups

How to back up and restore PostgreSQL with pg_dump and pg_restore

Back up a PostgreSQL database with pg_dump, restore it with pg_restore or psql, check the dump is usable, and schedule it with cron.

9 min read · Tested

How to back up and restore MySQL and MariaDB with mysqldump

Make consistent mysqldump backups without locking InnoDB tables, keep the password off the command line, restore them, and check they work.

7 min read

How to back up and restore MongoDB with mongodump and mongorestore

Dump a MongoDB deployment to one compressed archive, restore all of it or one collection, verify the result, and know when mongodump is the wrong tool.

7 min read

How to back up and restore Redis (RDB and AOF)

Decide whether your Redis needs a backup, take RDB snapshots with BGSAVE or redis-cli --rdb, copy Redis 7's multi-part AOF safely, restore without Redis overwriting your file, verify it, and schedule it with cron.

9 min read · Tested

How to set up PostgreSQL point-in-time recovery with WAL archiving

Archive PostgreSQL's WAL safely, take base backups with pg_basebackup, and restore to a chosen second or a named restore point. Tested commands, a retention script and the errors you will meet.

12 min read · Tested

How to back up PostgreSQL roles, users and permissions

Back up PostgreSQL roles, password hashes, memberships and tablespaces with pg_dumpall --globals-only, restore them before your databases, and load them into a managed database where you are not a superuser.

8 min read · Tested

How to back up a managed database (DigitalOcean, AWS RDS)

What DigitalOcean and AWS RDS automatic backups cover and what they miss, and how to keep your own pg_dump and mysqldump copies of a managed database in storage you control.

9 min read

How to do point-in-time recovery for MySQL with binary logs

Keep MySQL binary logs, take dumps that record their binlog position, copy the logs off the server, and replay them with mysqlbinlog to just before a bad statement.

9 min read

How to back up a SQLite database safely

Copy a live SQLite database without corrupting it or losing recent writes: .backup, VACUUM INTO and .dump, how to check and restore the copy, and a cron script.

8 min read

How to back up a Railway Postgres database

Use Railway's volume backups for quick rollbacks, then keep your own pg_dump copies outside Railway: from your machine through the TCP proxy, or from a cron service on the private network. Restore into a new Postgres and test it.

10 min read

How to back up a Render PostgreSQL database

What Render's point-in-time recovery and exports cover, what is lost when a database is deleted, and how to keep your own pg_dump backups from a server or a Render cron job.

9 min read

How to take physical MySQL and MariaDB backups with XtraBackup

Hot physical backups of MySQL with Percona XtraBackup and of MariaDB with mariadb-backup: pick the right version, back up, prepare, restore, stream to S3 and add incremental backups.

10 min read

How to upgrade PostgreSQL to a new major version safely

Move a PostgreSQL cluster to a new major version, such as 17 to 18, with pg_upgradecluster, pg_upgrade or a dump and restore, with a tested backup, pre-flight checks and a way back.

10 min read

How to back up Elasticsearch or OpenSearch with snapshots

Register a snapshot repository, take snapshots by hand and on a schedule with Elasticsearch SLM or OpenSearch Snapshot Management, restore indices without overwriting live ones, and check version compatibility before you need it.

10 min read

How to import a SQL file into MySQL or MariaDB

Import .sql and .sql.gz dumps with the mysql client or SOURCE, watch progress on big files, speed up large loads safely, check the result, and fix the errors imports hit most.

11 min read

How to reset the MySQL or MariaDB root password

Get back into MySQL or MariaDB when the root password is lost: try socket login first, then reset it with an init file or --skip-grant-tables, under systemd, in Docker and on managed databases.

9 min read

How to repair corrupted MySQL tables

Check MySQL and MariaDB tables, repair MyISAM and Aria with REPAIR TABLE, mysqlcheck or myisamchk, rescue corrupted InnoDB with innodb_force_recovery, and know when to restore instead.

9 min read

How to back up MySQL from a replica

Set up a read-only GTID replica of MySQL 8.4 or MariaDB, take consistent mysqldump backups from it instead of the primary, and catch a stalled replica before it hands you stale backups.

10 min read

How to restore a PostgreSQL dump with pg_restore or psql

Find out which format a PostgreSQL dump is in, load plain SQL with psql and archives with pg_restore, restore part of a dump, check the result, and fix the errors restores print.

10 min read · Tested

PostgreSQL incremental backups with pg_basebackup

Take incremental physical backups on PostgreSQL 17 and newer: turn on WAL summaries, chain pg_basebackup --incremental onto a full backup, rebuild it with pg_combinebackup, verify it, and delete whole chains.

9 min read

How to back up a MongoDB replica set

Dump a MongoDB replica set without loading the primary, make the dump consistent with --oplog, add hidden and delayed members for backups, snapshot a member safely, size the oplog window, and restore into a new replica set.

9 min read

How to back up PostgreSQL, MySQL and MongoDB to S3 automatically

Stream a compressed PostgreSQL, MySQL or MongoDB dump straight into S3 or any S3-compatible bucket with the AWS CLI: a key that cannot delete, a cron script that catches failed dumps, lifecycle retention, restores and the exact errors.

12 min read

How to back up PostgreSQL with pgBackRest

Set up pgBackRest, the open-source PostgreSQL backup tool, with an encrypted S3 repository: WAL archiving, full, differential and incremental backups, retention, point-in-time restores and the errors it prints.

10 min read

How to back up ClickHouse

Back up ClickHouse with its built-in BACKUP and RESTORE commands to a local disk or S3, add incremental backups, include users and roles, run it on a schedule, restore under a new name, and fix the common errors.

9 min read

How to back up InfluxDB

Back up and restore InfluxDB 2 with influx backup and the operator token, InfluxDB 1.x with influxd backup -portable, and InfluxDB 3 Core and Enterprise, plus line protocol exports, a nightly script and the common errors.

8 min read

How to back up a Qdrant vector database

Back up self-hosted Qdrant with collection and full storage snapshots, download and verify them on a schedule, restore by upload, file or at startup, and know when re-embedding is the better backup.

8 min read

How to back up Meilisearch

Back up self-hosted Meilisearch with snapshots for fast recovery and dumps for upgrades: schedule them, wait on the task, keep dated copies off the server, restore on a new server and fix the common errors.

7 min read

How to back up Apache CouchDB

Back up CouchDB 3 by copying its append-only data files while it runs, views first, plus the config that holds admins, the secret and the node name; restore on a new server, use replication safely and fix the common errors.

9 min read

How to back up Neo4j

Back up Neo4j Community with neo4j-admin database dump while it is stopped, include the system database for users, check and load dumps, run it nightly, use Docker, move between versions and fix the common errors. Enterprise online backups too.

8 min read

Backup storage

Set up S3, R2, B2, Wasabi, Spaces, Google Cloud Storage, Azure Blob, IDrive e2, Google Drive and the object storage of Hetzner, Scaleway, OVHcloud, Vultr, Akamai and UpCloud for backups: private buckets, scoped keys, retention and costs.

All backup storage

How to set up an Amazon S3 bucket for server backups

Create a private, encrypted S3 bucket for backups, give your server an IAM policy that reaches one prefix, add versioning and lifecycle rules, pick a storage class, and verify uploads with the AWS CLI.

10 min read

How to use Cloudflare R2 for server backups

Create an R2 bucket, choose a location hint or jurisdiction, scope an API token to one bucket, upload with the AWS CLI, expire old backups with lifecycle rules, and know where R2 differs from S3.

8 min read

How to use Backblaze B2 for server backups

Create a private B2 bucket, restrict an application key to one bucket and prefix, upload with the AWS CLI through the S3-compatible endpoint, and set lifecycle rules and Object Lock for retention.

9 min read

How to use Wasabi for server backups: private bucket, scoped key and the 90-day rule

Create a private Wasabi bucket, give your server a key limited to that bucket, upload with the AWS CLI, lock backups with Object Lock, and set retention that fits Wasabi's 90-day minimum storage duration.

8 min read

How to use DigitalOcean Spaces for server backups

Create a private Spaces bucket, give your server a limited access key, upload with the AWS CLI or s3cmd, expire old backups with a lifecycle rule, and know what Spaces costs and what it doesn't protect against.

8 min read

How to back up a server to Google Drive with rclone

Back up a Linux server to Google Drive with rclone: your own OAuth client ID, the drive.file scope, headless setup with rclone authorize, encryption with crypt, retention without a full trash, and the Drive limits that break backup jobs.

8 min read

How to use UpCloud Object Storage for server backups

Create an UpCloud Managed Object Storage instance and bucket, limit a server's key to that bucket with a custom policy, upload and verify backups with the AWS CLI, and expire old ones with lifecycle rules.

10 min read

How to use Hetzner Object Storage for server backups

Create a Hetzner Object Storage bucket, give each server a key that can upload but not delete, use the AWS CLI or rclone with the right endpoint, and expire and lock old backups with lifecycle rules and Object Lock.

10 min read

How to use Vultr Object Storage for server backups

Choose a Vultr Object Storage tier and location, create a bucket, use the subscription's key with the AWS CLI or s3cmd, expire old backups with a lifecycle rule, and know what it costs and what it doesn't protect against.

10 min read

How to use Akamai (Linode) Object Storage for server backups

Enable Akamai Object Storage, pick a region and its S3 endpoint, give each server a key limited to one bucket, upload and verify backups with s3cmd, expire them with lifecycle rules, and lock them with Object Lock.

10 min read

How to copy an S3 bucket to another provider with rclone

Copy a bucket between AWS S3, Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces and Google Drive with rclone: set up both remotes, price the egress, copy without deleting, check hashes, handle versions and Object Lock, and keep a second copy on a schedule.

10 min read

How to use a Hetzner Storage Box for server backups

Set up a Hetzner Storage Box as a backup target: a sub-account and SSH key per server on port 23, BorgBackup, restic, rsync and rclone configurations, automatic snapshots, prices, and the errors you will meet. It has no S3 endpoint.

11 min read

How to use Scaleway Object Storage for server backups

Pick a Scaleway region and storage class, give each server an IAM key that can upload but not delete, configure the AWS CLI and rclone with the regional endpoint, and expire, version, lock and restore backups, Glacier included.

12 min read

How to use Google Cloud Storage for server backups

Create a private Cloud Storage bucket for backups, give a service account upload-only access, upload with gcloud or rclone, use HMAC keys for S3 tools, and set lifecycle, soft delete and retention rules.

10 min read

How to use Azure Blob Storage for server backups

Create a storage account and container for backups, pick redundancy and access tiers, give servers a no-delete SAS or a managed identity, upload with AzCopy, the Azure CLI or rclone, and set lifecycle, soft delete and immutability.

10 min read

How to use IDrive e2 for server backups

Set up IDrive e2 as a backup target: enable a region and find its endpoint, give each server a key limited to its own bucket that can't delete, configure the AWS CLI and rclone, prune with lifecycle rules, lock with retention, and know the prices, limits and errors.

10 min read

How to use OVHcloud Object Storage for server backups

Choose an OVHcloud Object Storage class, region and endpoint, give each server an S3 user whose policy allows upload and read but not delete, configure the AWS CLI and rclone, and expire, version, lock and restore backups.

11 min read

Docker & Kubernetes

Back up and restore Docker volumes and images, databases in Docker Compose, Coolify, Dokku, Portainer, Kubernetes and k3s clusters and etcd, without copying files out from under a running container.

All docker & kubernetes

How to back up and restore Docker volumes

Back up Docker named volumes with a throwaway helper container, restore them into a new volume, move them to another host, and keep the data consistent.

9 min read

How to back up a database running in Docker Compose

Dump PostgreSQL, MySQL, MariaDB or MongoDB from a Compose service to the host with docker compose exec -T, restore it, check it and schedule it with cron.

9 min read

How to back up a Kubernetes cluster with Velero

Install Velero with an S3-compatible bucket, back up namespaces and persistent volumes, schedule backups with retention, and restore into the same or a new cluster.

9 min read

How to back up and restore Coolify

Schedule Coolify's database and volume backups to S3, back up the Coolify instance and its APP_KEY, restore a dump, and move Coolify to a new server.

10 min read

How to back up and restore etcd for a Kubernetes cluster

Take etcd snapshots on a kubeadm control plane with etcdctl, check them with etcdutl, ship them off the node on a timer, and restore them into a new data directory.

8 min read

How to back up and restore Portainer

Back up Portainer with its built-in backup file or its API, copy the portainer_data volume, restore onto a fresh install, and back up your containers' data separately.

9 min read

How to back up and restore a k3s cluster

Back up k3s's SQLite or embedded etcd datastore and its server token, schedule etcd snapshots to S3, restore with --cluster-reset, and back up volume data separately.

9 min read

How to back up Docker images (and when you don't need to)

Decide which Docker images need a copy, save them with docker save, load them on a new host, pin the rest by digest and keep copies in a private registry.

10 min read

How to back up a Dokku server

Back up a Dokku server: database exports and the Postgres plugin's S3 backups, app config, domains, storage mounts and Dokku's own directories, then restore it all on a new server.

10 min read

Application backups

Back up WordPress, WooCommerce, Drupal, Odoo, Moodle, Laravel, Nextcloud, GitLab, Keycloak, Grafana, Matomo, Discourse, Immich, Minecraft servers and more completely: the database, the files and the keys you cannot rebuild.

All application backups

How to back up and restore a WordPress site on your own server

Back up a self-hosted WordPress site completely: the database with WP-CLI or mysqldump, and wp-content and wp-config.php with tar. Then restore it on the same or a new server, change the URL safely, verify it and schedule it.

10 min read

How to back up and restore a Laravel application

Back up what a Laravel app cannot rebuild: the database, user files in storage/app, and the .env file with APP_KEY. Restore it on a new server, verify it, and schedule it with cron or the Laravel scheduler.

9 min read

How to back up and restore a self-hosted Ghost site

Back up a self-hosted Ghost site completely: dump its MySQL database and archive the content folder and config.production.json, and know what ghost backup and the Admin export leave out. Then restore it on a new server, verify it and schedule it.

8 min read

How to back up and restore a Craft CMS site

Back up Craft CMS 5 with php craft db/backup and a file archive that keeps .env, project config and asset uploads, and protect CRAFT_SECURITY_KEY. Then restore it on a new server with db/restore and craft up, verify it and schedule it.

8 min read

How to back up and restore Nextcloud

Back up a Nextcloud server the way its admin manual describes: maintenance mode, the config, data, apps and theme folders, and a database dump. Then restore it on the same or a new server, resync clients, verify it and automate it.

9 min read

How to back up and restore Vaultwarden

Back up a Vaultwarden server safely: what is in the data folder, a consistent copy of db.sqlite3, encrypting the archive, restoring it, and testing a restore without putting a second vault online.

10 min read

How to back up and restore n8n

Back up a self-hosted n8n instance: the .n8n folder and its encryption key, a safe copy of the SQLite database or a pg_dump, CLI exports of workflows and credentials, and how to restore and test it.

12 min read

How to back up and restore Gitea or Forgejo

Back up Gitea or Forgejo with gitea dump or forgejo dump, add a native database dump, handle Docker installs and large repositories, and restore everything by hand on a new server.

9 min read

How to back up and restore Uptime Kuma

Back up Uptime Kuma 2 safely: what is in the data folder, stopping the container or copying kuma.db live with SQLite's backup API, MariaDB setups, restoring onto a new server and testing a restore without duplicate alerts.

8 min read

How to back up and restore a Drupal site

Back up a Drupal 10 or 11 site completely: the database with drush sql:dump, the public and private files with tar, and settings.php with its hash salt. Then restore it on a new server with Composer and Drush, verify it and schedule it.

10 min read

How to back up and restore a Magento 2 store

Back up a self-hosted Magento Open Source or Adobe Commerce store: the database with mysqldump, pub/media with tar, and app/etc/env.php with its encryption key. Then restore it on a new server, rebuild code and indexes, verify it and schedule it.

10 min read

How to back up and restore Immich

Back up a self-hosted Immich server: its PostgreSQL database and nightly dumps, which UPLOAD_LOCATION folders hold your originals, a restic script for large libraries, and restoring onto a fresh install.

10 min read

How to back up and restore a Mastodon server

Back up a self-hosted Mastodon server: a custom-format pg_dump, the secrets in .env.production, uploaded media without the remote cache, and Redis. Then restore onto a new machine and rebuild feeds with tootctl.

9 min read

How to back up a Minecraft server

Back up a Minecraft Java or Bedrock server without stopping it: what to copy, a consistent copy with save-off and save-all flush over RCON, a cron script with retention, Docker, restoring a world and fixing damaged chunks.

10 min read

How to back up and restore self-managed GitLab

Back up self-managed GitLab with gitlab-backup create, keep gitlab-secrets.json and gitlab.rb safe, schedule and prune backups, upload them to object storage, and restore onto the same version with the checks GitLab recommends.

10 min read

How to back up a WooCommerce store

Back up a WooCommerce store so no orders are lost: which tables and folders WooCommerce adds to a WordPress backup, hourly database dumps, restoring without losing new orders, and keeping staging copies from charging cards or emailing customers.

10 min read

How to back up and restore a Moodle site

Back up a whole Moodle site: the PostgreSQL or MySQL database, moodledata and the code with config.php. Then restore it on a new server, change the URL, verify it and schedule it, and see why course backups are not a site backup.

9 min read

How to back up self-hosted Plausible Analytics

Back up Plausible Community Edition: a pg_dump of its PostgreSQL database, a ClickHouse BACKUP of the event data, the secrets in .env, and how to restore, upgrade and test it on a new server.

11 min read

How to back up and restore Paperless-ngx

Back up Paperless-ngx with its own document_exporter, or with its volumes and a database dump: what to keep, the exporter's flags, scheduling, encryption, restoring with document_importer, and testing a restore.

10 min read

How to back up and restore a Discourse forum

Back up a self-hosted Discourse forum with its built-in scheduled backups, send them to S3, keep app.yml safe, and restore onto a new server with discourse restore, including the errors you are likely to hit.

9 min read

How to back up and restore Mattermost

Back up a self-hosted Mattermost server: dump its PostgreSQL database with pg_dump, copy the config and data folders, see what mmctl export leaves out, handle Docker installs, and restore onto a new server at the same version before upgrading.

10 min read

How to back up and restore a Joomla site

Back up a Joomla 5 or 6 site completely: the MySQL, MariaDB or PostgreSQL database, the site files with tar, and configuration.php with its secret. Then restore it on a new server, fix the paths, verify it and schedule it.

10 min read

How to back up and restore a PrestaShop store

Back up a PrestaShop 8 or 9 store completely: the MySQL database with mysqldump, the images, downloads, modules and themes with tar, and parameters.php with its cookie keys. Then restore it on a new server, change the domain, verify it and schedule it.

10 min read

How to move a WordPress site to a new host

Move a WordPress site to a new host in the right order: lower the DNS TTL, copy the files and database with WP-CLI, change URLs without breaking serialized data, set up HTTPS, test before DNS changes, and keep the old host until DNS settles.

11 min read

How to back up and restore Keycloak

Back up Keycloak by dumping its database and copying keycloak.conf, providers, themes and TLS files, learn what kc.sh export does and leaves out, and restore onto a new server at the same version.

9 min read

How to back up Grafana

Back up a self-hosted Grafana server: copy grafana.db safely while it runs, keep grafana.ini and its secret_key, provisioning files and plugins, export dashboards with the HTTP API, and restore onto a new server.

8 min read

How to back up and restore Odoo

Back up a self-hosted Odoo Community or Enterprise database completely: the PostgreSQL database, the filestore and odoo.conf. Use the database manager or pg_dump and tar, restore on a new server, verify every attachment and neutralize test copies.

10 min read

How to back up and restore Matomo

Back up self-hosted Matomo Analytics completely: the MySQL or MariaDB database with mysqldump, config.ini.php and its salt, plugins and misc/user. Then restore it on a new server, re-archive reports, and keep visitor data in backups within your retention policy.

8 min read

Linux essentials

The tools behind every server backup: tar, rsync, rsnapshot, rclone, restic, Borg, Kopia, Duplicati, GPG, etckeeper, dd images, LVM, ZFS and Btrfs snapshots, Proxmox, SSH keys, cron and systemd timers, plus cPanel, Contabo, Hostinger, OVHcloud, Oracle Cloud and Scaleway servers.

All linux essentials

How to back up files and directories with tar

Create compressed tar backups on Linux, leave out caches and logs, check the archive is readable, restore to a safe directory, and run incremental backups with GNU tar.

9 min read · Tested

How to back up a server with rsync

Back up directories locally or over SSH with rsync, keep a complete copy for every day with --link-dest, use --delete without losing data, and restore and verify the result.

8 min read · Tested

How to schedule backups with cron

Schedule backups that run on time and fail loudly: crontab syntax, /etc/cron.d versus crontab -e, the PATH and % traps, logging, overlap protection with flock, testing and timezones.

9 min read

The find command: a practical guide with examples

Find files on Linux by name, type, size, age, owner and permissions, act on the results safely with -exec and xargs, and delete old backups without removing the wrong thing.

9 min read · Tested

How to back up a server with rclone to S3-compatible storage

Install a current rclone, connect it to an S3-compatible bucket, back up with copy or sync without losing deleted files, encrypt client-side, verify, restore, and run it from cron.

10 min read

How to back up a Linux server with restic to S3-compatible storage

Install a current restic, create an encrypted repository in an S3-compatible bucket, back up with excludes and tags, keep a retention policy with forget --prune, check and restore, clear stale locks, and run it from a systemd timer.

10 min read

How to back up a server with BorgBackup

Set up BorgBackup 1.4 to send encrypted, deduplicated backups over SSH to a second server, export the key, prune and compact old archives, check and restore, make the repository append-only, and run it from cron.

9 min read

How to encrypt backups on Linux with GPG and age

Encrypt server backups before they leave the machine with GPG or age: a public key the server cannot decrypt with, a passphrase file for simple scripts, streaming tar through encryption, decrypting, verifying, and keeping the keys safe.

8 min read · Tested

How to move a server to a new cloud provider with minimal downtime

Move a Linux server to another cloud with minutes of downtime: inventory, a matching build, two rsync passes, database dumps, a lowered DNS TTL, checks and a way back.

10 min read

What to back up on a Linux server: a checklist

The files, databases and settings to back up on a Linux server, the command that captures each one, what to leave out, and a printable checklist.

10 min read · Tested

How to back up a cPanel & WHM server

Set up WHM's scheduled backups, send copies to Amazon S3, Backblaze B2 or SFTP, archive one account with pkgacct, restore accounts and single files, move accounts with the Transfer Tool, and test a restore.

9 min read

How to back up a Contabo VPS

What Contabo's snapshots and Auto Backup add-on keep and for how long, why neither is an off-site backup, and how to send files and database dumps from a Contabo VPS to storage at another provider and restore them on any server.

8 min read

How to take consistent backups with LVM snapshots

Freeze a logical volume at one instant with lvcreate --snapshot, back it up with tar or restic from a read-only mount, keep the snapshot from filling up, remove it, and roll a volume back with lvconvert --merge.

10 min read

How to back up with ZFS snapshots and zfs send/receive

Take atomic ZFS snapshots, restore files from .zfs/snapshot, copy snapshots to another machine with zfs send and receive over SSH, send incrementals, resume broken transfers, keep encrypted data encrypted, and prune old snapshots.

9 min read

How to back up a server before an Ubuntu release upgrade

Prepare an Ubuntu server for do-release-upgrade: a snapshot plus database and file copies, a record of packages and services, a safe upgrade over SSH, the checks to run afterwards, and how to roll back.

9 min read

How to set up SSH key authentication and turn off passwords

Create an Ed25519 key, install it with ssh-copy-id or by hand, keep it unlocked with ssh-agent, turn off SSH password logins on Ubuntu without locking yourself out, and fix the errors people hit.

11 min read

How to copy files between servers with scp and rsync

Copy files and directories between Linux servers over SSH with scp, rsync, tar and sftp: the flags that matter, server-to-server copies without agent forwarding, resuming large files and checking the result.

10 min read · Tested

How to make incremental backups with tar

Use GNU tar's --listed-incremental snapshot file for full and incremental or differential backups, restore the chain in the right order, read what each archive recorded, and avoid the snapshot-file, device-number and macOS traps.

12 min read · Tested

How to back up a Linux server with Duplicati

Install Duplicati 2.4 on Ubuntu, keep its web UI on localhost behind an SSH tunnel, back up encrypted to S3-compatible storage or Backblaze B2, choose retention, script runs with duplicati-cli, and restore even after losing the server.

9 min read

How to back up a Linux server with Kopia

Install Kopia from its apt repository, create an encrypted repository in an S3-compatible bucket or over SFTP, set retention, compression and ignore rules, restore and verify snapshots, understand who runs maintenance, and schedule it with a systemd timer.

11 min read

restic vs Borg vs Kopia: which backup tool for a Linux server

A sourced comparison of restic 0.19, Borg 1.4 (and the Borg 2 beta) and Kopia 0.23 as of October 2026: storage, encryption, compression, deletion protection, several servers per repository, restore and maintenance, with a pick for four common setups.

9 min read

How to back up Proxmox VE virtual machines and containers

Back up Proxmox VE guests with vzdump: pick snapshot, suspend or stop mode, compress with zstd, schedule jobs with retention, restore with qmrestore and pct restore, and keep a copy off the host with Proxmox Backup Server or rclone.

9 min read

How to make a full disk image of a server with dd

Image a whole server disk with dd from a rescue system, compress it with zstd and stream it over SSH, shrink it by zeroing free space, check it with fdisk and losetup, restore it, and read dd's messages and errors.

9 min read · Tested

How to back up a Hostinger VPS

What Hostinger's weekly and daily VPS backups and its one snapshot keep and for how long, how to take and restore them in hPanel or through the API, and how to add a nightly copy of files and databases at another provider that restores on any server.

9 min read

How to back up an OVHcloud VPS

What OVHcloud's Standard and Premium automated backups and its Snapshot option keep, where they are stored, how to restore, mount or download them, and how to keep a copy of your files and databases at another provider.

10 min read

How to schedule backups with systemd timers

Run a backup on a schedule with a systemd service and timer: OnCalendar, catch-up runs after downtime, random delays, logs in the journal, alerts with OnFailure=, safe credentials and a sandbox that still reads everything.

11 min read · Tested

How to back up with Btrfs snapshots

Take read-only Btrfs snapshots, copy them to another server with btrfs send and receive, send only the changes with -p, automate it with btrbk or snapper, restore files or a whole subvolume, and see what snapshots cost in space.

10 min read

How to back up an Oracle Cloud (OCI) compute instance

Back up an OCI instance with boot and block volume backups, by hand or on Bronze, Silver, Gold or your own policy, fit them into Always Free's five backups, copy them across regions, restore to a new instance, and keep a copy outside Oracle.

11 min read

How to back up a Scaleway Instance

What Scaleway's snapshots and images copy, which Instance types use Local or Block Storage, the scw commands that work in 2026, what snapshots cost, how to restore or export one as QCOW2, and how to keep a copy outside Scaleway.

9 min read

How to back up a server with rsnapshot

Set up rsnapshot on Debian or Ubuntu: rotating snapshots that store only changed files, a tab-separated config, read-only pulls over SSH, database dumps, scheduling, restores and common errors.

10 min read

How to track /etc changes with etckeeper

Keep /etc in git with etckeeper: automatic commits on every apt run and once a day, your own commits, reading history with git log and git diff, restoring a file with its permissions, secrets in remotes, and the errors you will see.

8 min read

Disaster recovery

Plan for the bad day: business continuity vs disaster recovery, RPO and RTO, retention, ransomware, DNS failover, rebuilding a server, a DR plan template, the 3-2-1 rule, testing restores, and recovering a hacked server or deleted files.

All disaster recovery

The 3-2-1 backup rule for servers: what it means for a VPS

What three copies, two kinds of storage and one off-site copy mean for a cloud server, why the off-site copy belongs at a different provider, and three setups that meet the rule at different budgets.

9 min read

How to test a backup restore: files, PostgreSQL and a full server

Restore drills you can run today: verify a tar backup with sha256sum, restore a PostgreSQL dump into a scratch database and count its rows, boot a server from a snapshot, and record what each drill proves.

10 min read · Tested

Snapshot vs backup: what is the difference for a cloud server?

What a cloud snapshot captures, how it differs from a file or database backup, crash-consistent vs application-consistent, the same-account risk, and the combination that covers a typical VPS.

8 min read · Tested

RPO and RTO explained for small teams running servers

What recovery point and recovery time objectives mean for a server, how backup frequency and restore speed set them, how to measure both with a timed restore, and a worksheet for setting targets per system.

10 min read

How long to keep backups: writing a backup retention policy

Choose how long to keep server backups with grandfather-father-son rotation, work out the storage cost, avoid minimum-duration charges, plan deletion, and copy a sample retention policy.

9 min read

Disaster recovery plan template for a small business server

What a disaster recovery plan for a few servers must contain, a complete fill-in-the-blanks template, how to test it with a tabletop exercise and a live restore, and how often to review it.

10 min read

How to protect backups from ransomware and account compromise

Stop an attacker with root on your server, or with your cloud login, from deleting your backups: write-only keys, Object Lock, append-only repositories, a copy at another provider, MFA, and alerts on deletions.

9 min read

How to back up and restore Cloudflare DNS records

Export Cloudflare DNS records as a zone file and as JSON, automate it with a read-only API token and cron, and restore by putting back only what changed.

10 min read

How to restore a server from backup when the old one is gone

Rebuild a lost server from its backups in the right order: matching OS and versions, users, /etc file by file, databases from dumps, files, services, TLS and DNS, with checks before traffic moves and a runbook to copy.

11 min read

How to fail over a website to a standby server with DNS

Move a website to a standby server when the primary fails by changing its DNS record: pick a TTL, keep the standby in sync, run a health check that switches a Cloudflare record once, fail back, and know when a movable IP is the better tool.

11 min read

What to do when your server is hacked: recovering from backups

Isolate a compromised Linux server without destroying evidence, work out when the attack began, rebuild from a backup taken before it, rotate every credential, check your backups were not touched, and meet the GDPR's 72-hour notice rule.

10 min read

How to recover deleted files on Linux

Get a deleted file back on a Linux server: copy it from /proc while a program still has it open, check whether TRIM already erased it, what debugfs, extundelete and PhotoRec can and cannot do on ext4, XFS and Btrfs, and how to restore one file from a backup.

10 min read · Tested

Business continuity vs disaster recovery: what's the difference?

Business continuity keeps the business running through a disruption; disaster recovery brings its IT systems back. Definitions from NIST and ISO, how a business impact analysis sets RTO and RPO, a worked example, how to test each, and an outline to copy.

10 min read

Monitoring & alerts

Know when a site is down or a backup has stopped: uptime and certificate checks, heartbeats for scheduled jobs, backup failure alerts and status pages.

All monitoring & alerts

Rather not run the cron jobs yourself?

VPS Snaps schedules snapshots and backups on eight clouds into storage you own, alerts you when a run fails, and can test-restore them. The free plan needs no card.

Your credentials are encrypted with AES-256-GCM, your backups never live on our storage, and our GDPR data processing agreement is public.

No credit card required. Cancel anytime.