{"id":74779,"date":"2026-08-04T00:57:36","date_gmt":"2026-08-04T06:57:36","guid":{"rendered":"https:\/\/www.scalahosting.com\/blog\/?p=74779"},"modified":"2026-08-04T00:57:37","modified_gmt":"2026-08-04T06:57:37","slug":"website-backup-guide","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/blog\/website-backup-guide\/","title":{"rendered":"The Complete Guide to Website Backup, Recovery, and Disaster Recovery"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Most website owners know that backups matter. However, not all of them know exactly what their backups cover, how far back their restore points go, or what to expect when something actually needs to be recovered. There\u2019s a meaningful gap between having a backup and having a backup strategy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Website backup is also a broader subject than it first appears. It covers scheduled file and database protection, point-in-time database recovery for sites under active write traffic, and, at the far end, disaster recovery: rebuilding an entire server from scratch when the hardware itself is gone. Each addresses a different kind of failure, and a strategy that&#8217;s solid in one scenario can be less than perfect in others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide explains how ScalaHosting\u2019s backup, recovery, and disaster recovery tools help protect websites against common data-loss and infrastructure-failure scenarios.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Backup, Recovery, and Disaster Recovery: What&#8217;s the Difference?<\/strong><strong><\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full mpg-gallery\"><img decoding=\"async\" width=\"1140\" height=\"513\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-1140x513-1.webp\" alt=\"The Complete Guide to Website Backup, Recovery, and Disaster Recovery, Backup, Recovery, and Disaster Recovery: What&#8217;s the Difference?\" class=\"wp-image-74782\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-1140x513-1.webp 1140w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-1140x513-1-300x135.webp 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-1140x513-1-768x346.webp 768w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The three terms are often treated as synonyms. They aren&#8217;t. Using them interchangeably leads to strategies with gaps &#8211; plans that look complete on paper but leave a category of failure entirely unaddressed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Backup<\/strong> is the process of copying your website&#8217;s files, databases, and emails to a separate storage location on an automated schedule. A backup answers one question: if data is deleted, overwritten, or corrupted, can you get it back? The answer depends on when the last backup ran, what it captured, and how far back your restore points go.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Recovery<\/strong> is the act of restoring that data. You might recover a single deleted file, a database table dropped accidentally, or an entire account after a site compromise. Recovery is only ever as good as the backup it reads from: if the most recent backup is twelve hours old, recovery means accepting twelve hours of lost changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Disaster recovery<\/strong> is a different conversation entirely. It addresses scenarios where the server itself no longer exists due to a hardware failure, a lost cloud virtual machine without a recoverable state, or a catastrophic data center incident. Disaster recovery means rebuilding an entire hosting environment from offsite backups onto fresh hardware. The server isn&#8217;t being restored. It&#8217;s being recreated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding all three matters is crucial because a strategy that&#8217;s strong in one area can still have serious gaps in others. Daily backups with no offsite copy provide no protection if the server is down. Offsite backups with a short retention period are no good when a compromise dates back several weeks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What a Good Backup Strategy Looks Like<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most backup conversations start and end with a single question: Is there a backup? The more useful questions are: where is it, how many separate copies exist, and is there any scenario in which all of them could be lost simultaneously?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The 3-2-1 rule provides a framework for those questions. Coined by photographer and digital asset management expert Peter Krogh<em> <\/em>and since adopted as a formal recommendation by security organizations, including the US Cybersecurity and Infrastructure Security Agency, the strategy has three components:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>3 copies<\/strong> of your data &#8211; the live site plus two independent backups<\/li>\n\n\n\n<li><strong>on 2 different types<\/strong> of storage &#8211; so a single failure mode cannot affect all copies<\/li>\n\n\n\n<li><strong>with 1 copy stored offsite<\/strong> &#8211; physically and logically separate from the other two<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Applied to a hosting account: your live website is copy one. A backup on the same server is the second copy &#8211; easy to access, but sharing the fate of the primary hardware. A backup on a remote server or cloud storage account you control independently is copy number three, stored in a location with an entirely separate failure mode.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reason two storage types matter: different failure modes affect different systems. A ransomware attack that encrypts your server can also encrypt anything directly mounted to it. An offsite copy on a storage account with separate credentials is unaffected &#8211; a different system, a different attack surface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reason one copy must be stored offsite is simple. Hardware problems and data center outages aren&#8217;t always quick to resolve. If all three copies live on the same physical infrastructure, you don&#8217;t have three copies &#8211; you have one copy with two mirrors and a single point of failure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What the 3-2-1 rule doesn&#8217;t cover is frequency and retention &#8211; how often to take backups and how long to keep them. That depends on how quickly your site&#8217;s data changes and how much of it you can afford to lose. The rule tells you where to put your backups. The retention strategy is what you build on top of it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How File and Account Backups Work<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ScalaHosting customers have access to a built-in backup system that runs on a schedule and protects three things together: files, databases, and email. These aren&#8217;t separate operations &#8211; a single backup run captures the document root that makes up your website, the databases those files depend on, and the mailbox data associated with the account. Restoring from that backup brings all three back as a coherent whole.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The mechanism underneath is <strong>rsync<\/strong>, a file-synchronization tool that transfers only what has changed since the last backup. On a large site, this keeps backup windows short and storage-efficient &#8211; a full incremental run against a mostly-unchanged file set takes a fraction of the time a fresh copy would.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Backups can run to up to four destinations simultaneously, each operating independently:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Local storage<\/strong> on the same server &#8211; stored in a dedicated directory on the host machine, fastest to restore from since no network transfer is involved. SPanel requires at least 60% free disk space before enabling local backups.<\/li>\n\n\n\n<li><strong>A remote server<\/strong> over SSH &#8211; sends backups to a separate machine you operate, keeping your data offsite from the primary server entirely.<\/li>\n\n\n\n<li><strong>S3-compatible object storage<\/strong> &#8211; supports AWS S3 and any provider that implements the same API: Wasabi, DigitalOcean Spaces, Cloudflare R2, MinIO, Backblaze&#8217;s S3-compatible endpoint, and others.<\/li>\n\n\n\n<li><strong>Backblaze B2<\/strong> &#8211; supported as a first-class destination through its native API, separately from the S3 path.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Each destination operates independently. A slow upload to S3 doesn&#8217;t delay the local backup. A temporary outage on the remote server doesn&#8217;t stop the other destinations from running. The system keeps going with whatever is available, and logs clearly when a destination was unreachable rather than silently skipping it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All of this is managed through <a href=\"https:\/\/www.scalahosting.com\/spanel.html\">SPanel<\/a>, ScalaHosting\u2019s hosting control panel. Feature availability can vary by hosting environment, but SPanel is used across ScalaHosting shared hosting and <a href=\"https:\/\/www.scalahosting.com\/managed-vps-hosting.html\">managed VPS services<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One operational detail worth knowing: the backup process is CPU-throttled. A governor limits how much processor time it can consume, ensuring live websites remain responsive during a full backup run. If you&#8217;ve used a shared environment where the overnight backup makes the site sluggish for hours, this is the design decision that prevents that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Makes SPanel\u2019s Backup System Different<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ufeffSPanel\u2019s backup system is designed as more than a scheduled copy of website files. It supports multiple backup destinations, independent retention schedules, CPU-throttled backup runs, MariaDB point-in-time recovery, custom manual backups, restore-point locking, database\/account exclusions, and full-server disaster recovery. That combination lets website owners recover from small mistakes, database-level incidents, and full infrastructure loss using the same control-panel ecosystem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How Retention Schedules Work<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Running a backup is one decision. How long you keep it &#8211; and how many restore points you maintain within that window &#8211; is another. Retention determines how far back you can go, and how precisely you can target a specific moment in time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Four retention tiers give you independent control over each layer:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hourly:<\/strong> specify which hours of the day to run a backup and how many recent hourly snapshots to retain. Hourly backups give you the shortest gap between a problem occurring and your nearest clean restore point.<\/li>\n\n\n\n<li><strong>Daily:<\/strong> specify which days of the week and how many recent daily backups to keep. Daily backups are the standard operational safety net for most sites.<\/li>\n\n\n\n<li><strong>Weekly:<\/strong> specify one day per week and the number of weekly backups to retain. It&#8217;s useful for recovering a state from last week without the storage cost of keeping every daily backup indefinitely.<\/li>\n\n\n\n<li><strong>Monthly:<\/strong> specify which dates of the month and how many monthly backups to hold. Monthly backups extend your recovery horizon significantly for a fraction of the storage cost of daily retention over the same period.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Each destination can run on a different schedule. Local storage is fast and cheap to use frequently &#8211; hourly backups there give you fine-grained recovery for recent events. Remote or cloud storage may have different cost profiles, making daily or weekly backups the more practical choice for offsite protection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s what a sensible configuration looks like for a live ecommerce store: hourly backups during business hours retained for 24 hours, daily backups retained for a week, the Sunday backup retained for a month, and the first-of-the-month backup retained for six months. That gives fine-grained coverage for recent problems and progressively coarser coverage for older ones &#8211; which matches how recovery scenarios actually play out in practice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Choosing Where to Store Your Backups<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The four backup destinations are not alternatives to one another. Running more than one simultaneously is the recommended approach &#8211; each destination has its own failure mode, and a backup that survives one scenario may not survive another.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Local Storage<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Local backups are stored in a dedicated directory on the same server that hosts your live site. They&#8217;re the fastest restore option &#8211; no network transfer, just reading from the local disk. For recovering a deleted file, reverting a broken configuration, or undoing an accidental database change, local backups are the right tool. The trade-off is obvious: a local backup shares the same hardware as the production site. Server loss means local backup loss.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Remote Server<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Remote backups send data to a separate server over SSH. SPanel handles key-based authentication automatically during setup &#8211; no manual key exchange, no passwords stored in configuration files. The receiving server needs SSH access and enough storage capacity; beyond that, it can be any machine you operate. The result is a true offsite copy: if your primary server is knocked offline, the remote backups remain on a machine with no shared failure mode.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>S3-Compatible Object Storage<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S3-compatible destinations cover AWS S3 and any provider that implements the S3 API. The key detail in SPanel&#8217;s implementation is a custom endpoint field: it allows backups to go to providers other than AWS &#8211; Wasabi for lower per-gigabyte pricing, Cloudflare R2 with no egress fees, DigitalOcean Spaces for ecosystem consistency, MinIO for fully self-hosted object storage, or Backblaze via its S3-compatible interface. You choose the provider that fits your budget and compliance requirements rather than whichever one happens to be the platform&#8217;s default.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Backblaze B2<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Backblaze B2 is supported as a first-class destination via its native API via <strong>rclone<\/strong>, independently of the S3 path. If you already use B2 for other storage, this lets you route backups there without adding a new provider relationship or working through the S3 compatibility layer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The table below summarizes the four destinations.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Destination<\/strong><\/th><th><strong>What it protects against<\/strong><\/th><th><strong>Best for<\/strong><\/th><th><strong>Restore speed<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Local storage<\/td><td>Accidental deletion and corruption<\/td><td>Fast day-to-day file recovery<\/td><td>Fastest &#8211; no network transfer required<\/td><\/tr><tr><td>Remote server (rsync\/SSH)<\/td><td>Hardware failure and full server loss<\/td><td>Offsite protection and disaster recovery<\/td><td>Fast over a good connection<\/td><\/tr><tr><td>S3-compatible storage<\/td><td>Provider outages and vendor lock-in<\/td><td>Long-term archival and storage flexibility<\/td><td>Moderate<\/td><\/tr><tr><td>Backblaze B2<\/td><td>Provider outages and hardware failure<\/td><td>Cost-effective cloud backup<\/td><td>Moderate<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A practical starting point: local backups for fast day-to-day restores, plus at least one offsite destination &#8211; remote server or cloud &#8211; as your true disaster-recovery copy. That combination satisfies the 3-2-1 rule&#8217;s offsite requirement while keeping restore speed manageable for the scenarios you&#8217;ll actually encounter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Point-in-Time Recovery: Going Back to a Specific Database Restore Point<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hourly file backups leave you with a recovery gap of up to 60 minutes. For most sites, that&#8217;s acceptable. For a database under active write traffic, it frequently isn&#8217;t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consider a WooCommerce store processing orders continuously through the working day. A database migration script runs at 10:14 AM and corrupts the orders table. The most recent hourly backup is from 10:00 AM. Restoring from that backup means losing every transaction placed in those fourteen minutes. For a store with meaningful order volume, that&#8217;s a real loss &#8211; and for a booking system or subscription platform where each database query represents a customer commitment, the stakes are higher still.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Point-in-time recovery (PITR) closes that gap. Instead of waiting for the next scheduled backup, PITR takes physical snapshots of the <strong>MariaDB<\/strong> data directory at short, configurable intervals &#8211; every 5, 10, 15, 30, or 60 minutes. Retention is measured in hours: up to 168 hours, or a full week, of granular database history.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The technical approach is non-chained incrementals. Each snapshot is built independently from the day&#8217;s full backup rather than from the previous increment. In a chained approach, where each increment depends on the one before, a single corrupted snapshot breaks every subsequent restore point in the chain. With non-chained incrementals, a corrupted five-minute window leaves every other snapshot unaffected. One bad increment costs one increment&#8217;s recovery options, nothing further down the line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When you restore from a PITR point, the system applies the matching snapshot on top of the day\u2019s full backup and hands the result to MariaDB. The database is restored to the selected PITR restore point rather than the last hourly backup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Restoring to a different database name is also supported. The original database stays intact while the recovered version is created alongside it under a new name, giving you both states to compare before deciding whether to cut over. If you need to download a past database state without restoring it, a direct export to a .sql dump file in your account is also available.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A note on scope:<\/strong> PITR covers MariaDB databases. <strong>PostgreSQL<\/strong> databases are protected by the standard file-level backup schedule &#8211; each scheduled backup run captures the PostgreSQL data directory &#8211; but do not have an equivalent sub-hourly snapshot capability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Disaster Recovery: Rebuilding a Server from Scratch<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full mpg-gallery\"><img decoding=\"async\" width=\"1140\" height=\"513\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-Build-1140x513-1.webp\" alt=\"The Complete Guide to Website Backup, Recovery, and Disaster Recovery, Disaster Recovery: Rebuilding a Server from Scratch\" class=\"wp-image-74784\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-Build-1140x513-1.webp 1140w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-Build-1140x513-1-300x135.webp 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/08\/The-Complete-Guide-to-Website-Backup-Recovery-and-Disaster-Recovery-Build-1140x513-1-768x346.webp 768w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Everything covered so far assumes the server still exists when something goes wrong. Disaster recovery is for the scenario where it doesn&#8217;t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hardware fails, and even cloud virtual machines can be lost without warning or a recoverable state. When the server that hosts your website breaks, you&#8217;re not restoring files to a running machine &#8211; you&#8217;re rebuilding the site itself from whatever backups you have stored offsite.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A full server restore handles this. You provision a new SPanel server, point it at your offsite backups, and run the restore. From there, the process is automated:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Services that would interfere with restoration are stopped first &#8211; the database server, mail server, DNS server, and IMAP service. The SPanel metadata directories are restored: account records, DNS zone files, and per-user scheduled tasks. MariaDB is restored next, covering the data directory, credentials, and file ownership. If the original server was running PostgreSQL, the restore detects that from the backup and installs PostgreSQL on the new server before restoring its data directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Selected system configuration is restored from backup &#8211; specifically the files that need to carry across to the new environment: user accounts, the hostname, web server configuration, SSL certificates, mail server settings, DNS configuration, and firewall rules. Hardware-specific files are left for the new server to manage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every hosted account is then restored in sequence: home directories, file permissions, and per-domain log directory structures. Any reference to the old server&#8217;s IP address is rewritten to the new server&#8217;s IP address across all configuration files. Without this step, database connection strings, absolute URLs in configuration files, and any other hard-coded reference to the old machine would break silently &#8211; sites would come back, but parts of them wouldn&#8217;t function.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The web server stack is auto-detected from the backup. If the original server ran OpenLiteSpeed, OpenLiteSpeed is installed on the new server, and its configuration is restored. If it ran Nginx, the same. If neither, Apache is the default. You don&#8217;t re-configure the web server on the new machine &#8211; the restore handles everything for you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>On the empty-server requirement:<\/strong> A full restore will run only on a server with no existing hosted accounts. This is a deliberate safety feature. Overwriting a live server&#8217;s accounts, database, and system configuration is irreversible. Requiring an empty destination makes it structurally difficult to accidentally run a disaster-recovery restore against the wrong target.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An important limitation to plan for:<\/strong> Full server restore reads from local backups or remote (SSH\/rsync) backups only. S3 and Backblaze B2 are not currently supported as direct full-restore sources.<em> <\/em>If your only offsite copies are in S3 or B2, the path to a full server restore is to first copy that data to a remote server accessible via rsync, then run the full restore against that remote server. This workaround is straightforward once you know about it &#8211; but it&#8217;s worth building into your disaster recovery plan before you need it, not during an actual incident.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Before You Make a Risky Change: Manual Backups<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The scheduled backup system protects you from unexpected problems. Manual backups protect you from expected ones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before a major plugin update, a database schema migration, a theme change, or any other modification with a meaningful rollback cost, the right habit is to back up first. If something breaks, you&#8217;re restoring from a clean point taken two minutes before the change, not from the last hourly snapshot that captured a version of the site you may not want.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A manual backup lets you choose exactly what to capture: specific folders, specific databases, or the full account. You choose the format &#8211; tar or zip &#8211; and optionally encrypt the archive before it is stored or transmitted. Optional passphrase-based AES-256-CBC encryption can be applied to the archive before it is uploaded or downloaded. The encrypted file can then be delivered to an FTP server you operate independently of your hosting account, or you can download it to your computer. <a href=\"https:\/\/www.scalahosting.com\/spanel.html\">SPanel<\/a> handles all of this through the same control panel interface used for scheduled backups.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Manual backups sent to your own server sit outside the normal backup rotation. The retention schedule that governs your automatic backups doesn&#8217;t apply to them &#8211; they persist for as long as you choose to keep them, making them well-suited for permanent pre-change snapshots, compliance records, or any backup you need to guarantee will still be there in six months.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Controlling and Customizing Your Backup Setup<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Not every site has the same protection requirements, and not every database in an account is worth backing up. Several configuration options let you tailor the system to your actual workflow rather than applying a single policy uniformly across everything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Locking restore points<\/strong> prevents the rotation scheduler from deleting a specific backup when newer backups would normally push it out of the retention window. A locked restore point stays in place until you explicitly unlock it. This is useful for compliance snapshots that need to be held beyond the standard retention period, for preserving the pre-migration state of a significant change, or for legal hold scenarios where a specific version of your data needs to be kept indefinitely.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Per-database exclusion<\/strong> removes a specific database from scheduled backup runs without affecting its operation on the server. The database continues to function normally &#8211; it simply isn&#8217;t included when backups run. For databases that serve as caches, hold temporary session data, or contain nothing that requires protection, exclusion reduces backup time and storage consumption across all configured destinations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Per-account exclusion<\/strong> works at the account level. An account flagged for exclusion continues to run normally on the server; its data is skipped during backup runs. Appropriate for test accounts, development sandboxes, or accounts where the account holder manages their own backup process independently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Browsing backup contents before restoring<\/strong> lets you navigate the file tree within a restore point before committing to any restore operation. Before pulling a folder back into the live account, you can confirm the backup contains the version you actually want &#8211; the right filename, the right last-modified date, the right directory structure. Verifying first avoids restoring the wrong version and then needing to undo that restore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Restoring to a different database name<\/strong> keeps the live database intact while recovering an older version alongside it under a new name. Both states coexist on the same database server: the current production version and the past version you&#8217;re examining. Once you&#8217;ve confirmed the recovered version is correct, you can cut over at your convenience rather than going straight from backup to production with no comparison step.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Backups and Security: How the Two Work Together<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Backups and security tools protect against different categories of failure and operate on different timelines. They&#8217;re complementary &#8211; not alternatives to each other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.scalahosting.com\/website-security.html\">SShield<\/a>, ScalaHosting&#8217;s real-time security monitoring system, analyzes incoming traffic and blocks malicious requests before they reach hosted websites. It works automatically in the background, catching known attack patterns, exploit attempts, and anomalous traffic at the point of entry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Backups handle what comes through regardless, including scenarios where no external attack is involved at all. Malware can reach a site through a compromised plugin before a patch exists, a common vector in <a href=\"https:\/\/www.scalahosting.com\/blog\/wordpress-security-guide\/\">WordPress security<\/a> incidents. The same is true of an automated script running against the wrong database or a routine update that leaves a site misconfigured. Backups don&#8217;t prevent these things. They make recovery possible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>One timing consideration that matters in practice:<\/strong> if a site is compromised and you restore from a backup taken after the compromise, you restore the compromised version. A clean recovery requires finding a restore point that pre-dates the attack, which means having enough retention history to look back far enough. Given that a compromise went undetected for 10 days, a 3-day retention window isn&#8217;t sufficient.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A complete data protection strategy uses security to reduce the attack surface and backups to recover from whatever gets through. Neither replaces the other. Together, they define what protected actually means for a live website.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What backups do not solve&nbsp;<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Backups do not prevent downtime, malware, bad plugin updates, or database corruption from happening. They give you a recovery path after something goes wrong. For full protection, backups should be combined with security monitoring, update management, uptime monitoring, and a tested restore process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most website owners know that backups matter. However, not all of them know exactly what their backups cover, how far &#8230;<\/p>\n","protected":false},"author":113,"featured_media":74780,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Website Backup and Disaster Recovery Guide %%sep%% %%sitetitle%%","_seopress_titles_desc":"Learn how website backups, point-in-time recovery, and full-server disaster recovery work in SPanel, including local, remote, S3, and Backblaze B2 backup options.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[3],"tags":[],"class_list":["post-74779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-hosting-in-general"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/74779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/comments?post=74779"}],"version-history":[{"count":3,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/74779\/revisions"}],"predecessor-version":[{"id":74786,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/74779\/revisions\/74786"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/media\/74780"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/media?parent=74779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/categories?post=74779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/tags?post=74779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}