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.
Cloud snapshots
Take, schedule and restore snapshots on DigitalOcean, Hetzner, Vultr, Linode, AWS, Google Cloud and Azure, and know what they don't cover.
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 readHetzner 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 readVultr 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 readLinode 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 readHow 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 readHow 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 readHow 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 readHow 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 readDatabase 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.
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 · TestedHow 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 readHow 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 readHow 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 · TestedHow 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 · TestedHow 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 · TestedHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 · TestedPostgreSQL 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readBackup 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.
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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readDocker & 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.
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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readApplication 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.
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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readLinux 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.
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 · TestedHow 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 · TestedHow 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 readThe 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 · TestedHow 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 readHow 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 readHow 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 readHow 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 · TestedHow 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 readWhat 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 · TestedHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readHow 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 · TestedHow 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 · TestedHow 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 readHow 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 readrestic 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 readHow 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 readHow 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 · TestedHow 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 readHow 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 readHow 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 · TestedHow 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 readHow 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 readHow 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 readHow 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 readHow 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 readDisaster 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.
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 readHow 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 · TestedSnapshot 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 · TestedRPO 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 readHow 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 readDisaster 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 readHow 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 readHow 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 readHow 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 readHow 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 readWhat 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 readHow 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 · TestedBusiness 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 readMonitoring & 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.
How to monitor website and server uptime
What to check (status code, page text, certificate expiry, ports, DNS), how often, how to confirm an outage before alerting, heartbeat checks for cron jobs, and a curl-and-cron checker you can run yourself.
11 min read · TestedHow to set up a status page for your service
What a status page is for, what to put on it, where to host it so it stays up when your service does not, how to write incident updates (with templates to copy), and the mistakes that make people stop trusting it.
10 min readHow to know when a server backup fails
Catch failed, missing and empty backups: strict bash settings and pipefail, a heartbeat that alerts when success pings stop, a freshness and size check on the bucket, cron mail, and how to prove each alert fires.
11 min readRather 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.
No credit card required. Cancel anytime.