{"id":1119,"date":"2026-03-05T18:22:54","date_gmt":"2026-03-05T15:22:54","guid":{"rendered":"https:\/\/allinonewpsettings.com\/blog\/?p=1119"},"modified":"2026-10-16T16:22:01","modified_gmt":"2026-10-16T13:22:01","slug":"wordpress-backup-stuck-failing","status":"publish","type":"post","link":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/","title":{"rendered":"WordPress Backup Stuck or Failing? Find the Cause and Fix It"},"content":{"rendered":"<p>A WordPress backup stuck at 45 percent is usually not stuck. The bar you are watching is drawn by your browser. The job it describes runs on your server, and when the two lose contact your bar stops while the work carries on without it.<\/p>\n<p>Three different things look identical on that screen: a job still working, a job that finished while nobody was looking, and a job that never started at all. This guide tells them apart. Each one has a different next step, and only one of them asks anything of you.<\/p>\n<div class=\"aiows-article-toc\" style=\"margin: 28px 0; padding: 20px 22px; border: 1px solid #dcdcde; border-radius: 12px; background: #fafafa;\"><strong style=\"display: block; margin-bottom: 10px; font-size: 18px;\">Table of contents<\/strong><\/p>\n<ol style=\"margin: 0 0 0 20px;\">\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#alive\">Is it working, or is the page just not being told?<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#progress\">What the percentage on the screen actually is<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#never-ran\">The scheduled backup that never started<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#codes\">Reading the error code<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#stages\">Where each stage runs out of room<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#cancel\">Cancelling without losing the evidence<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#retry\">The one retry, and what to change before it<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#verification\">Verification<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#aiows\">AIOWS Backup Manager<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#faq\">Frequently asked<\/a><\/li>\n<li><a style=\"color: inherit; text-decoration: underline; text-underline-offset: 2px;\" href=\"#official-sources\">Sources<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"alive\" style=\"scroll-margin-top: 96px;\">Is it working, or is the page just not being told?<\/h2>\n<p>Before you cancel anything, answer one question: is there still a job?<\/p>\n<p><strong>Close the progress window and open the backups list.<\/strong> Your server writes that list when a package finishes. Your browser draws the bar while it waits. If your backup is in the list, it is done, whatever the bar said the last time you looked.<\/p>\n<p>That is the ordinary ending, not a rare one. A window that sits at 45 percent in the database stage, does not move for a long time, and then reaches 100 percent after you have given up and closed the tab \u2014 you never see the end of it. You find the backup by opening the list, not by watching the screen.<\/p>\n<p><strong>Look at whether anything is still changing.<\/strong> You have two signs, and they disagree usefully:<\/p>\n<ul>\n<li>your package file on disk is growing, or the elapsed time is still climbing \u2014 something is working;<\/li>\n<li>the file size, the stage and the elapsed time have all stood still for many minutes \u2014 your worker has probably stopped.<\/li>\n<\/ul>\n<p><strong>Do not press Start again to find out.<\/strong> A second job does not replace your first. It competes with it for the same disk, the same database and the same PHP processes, and it makes the first failure harder for you to read.<\/p>\n<figure class=\"aiows-article-figure\" style=\"margin: 28px 0;\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-8705\" style=\"display: block; max-width: 100%; height: auto; border: 1px solid #dcdcde; border-radius: 12px;\" src=\"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/progress-mid-stage-en.webp\" alt=\"The backup progress window during a run: a ring filled to 70 percent, the stage named as streaming files, and an elapsed time of seven seconds.\" width=\"1280\" height=\"944\" \/ fetchpriority=\"high\" loading=\"eager\" srcset=\"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/progress-mid-stage-en.webp 1280w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/progress-mid-stage-en-300x221.webp 300w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/progress-mid-stage-en-1024x755.webp 1024w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/progress-mid-stage-en-768x566.webp 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><figcaption style=\"margin: 8px 0 0; font-size: 14px; line-height: 1.5; color: #50575e;\">The stage and the elapsed time are only here \u2014 write both down before you close this window.<\/figcaption><\/figure>\n<h2 id=\"progress\" style=\"scroll-margin-top: 96px;\">What the percentage on the screen actually is<\/h2>\n<p>The number is not a measurement of your job. It is the last message your browser managed to collect.<\/p>\n<p>Your backup runs as a detached worker on the server. That worker writes its state \u2014 stage, progress, elapsed time \u2014 as it goes. The page you are looking at asks for the state every few seconds and redraws the bar from the answer. Two separate things, joined by an HTTP request that can fail on its own.<\/p>\n<p>When that request stops arriving, your bar freezes at the last number it was given, and the worker never learns that you stopped listening. Your laptop going to sleep will do it. So will a tab your browser throttles in the background, a proxy that closes an idle connection, or a security plugin that starts rate-limiting the endpoint.<\/p>\n<p>The plugin says so itself. Its error catalogue lists <code>AIOWS-BK-E2000<\/code> as <em>&#8220;The browser lost contact with the backup progress endpoint. The backup may still be running on the server \u2014 check the backups list in a moment.&#8221;<\/em> It is telling you about your page, not about your backup.<\/p>\n<p>Long stages hold you on one number, and that is not a fault. A database stage draining many tables, or a file stage walking a directory of thousands of small files, reports rarely because each unit of work is small. Your bar can sit still for several minutes and be perfectly healthy.<\/p>\n<p>So the percentage answers what your page last heard. The backups list answers whether you have a package. Only the second question is worth asking.<\/p>\n<h2 id=\"never-ran\" style=\"scroll-margin-top: 96px;\">The scheduled backup that never started<\/h2>\n<p>This one looks different and is far more common than it should be. You save the schedule, your next run time comes and goes, and nothing happens. Not late. Never.<\/p>\n<p><strong>WP-Cron is not cron.<\/strong> It has no timer. WordPress checks for due tasks when somebody visits your site, and then fires a request at its own <code>wp-cron.php<\/code> to run them. If your site is quiet, that moment may never arrive.<\/p>\n<p>Four separate things produce the same silence in WordPress, and they need different fixes:<\/p>\n<ul>\n<li><strong>your host refuses the request.<\/strong> <code>wp-cron.php<\/code> answers 401 or 403, so nothing scheduled ever runs.<\/li>\n<li><strong>your site cannot reach itself.<\/strong> The loopback request fails outright \u2014 a DNS or firewall arrangement that stops your server calling its own hostname.<\/li>\n<li><strong>nothing is wrong and nothing runs.<\/strong> <code>wp-cron.php<\/code> answers normally; your site has not had enough visits to trigger it.<\/li>\n<li><strong><code>DISABLE_WP_CRON<\/code> is set with nothing behind it.<\/strong> Someone turned off the built-in scheduler intending to add a system cron job, and the cron job was never added or has since stopped.<\/li>\n<\/ul>\n<p><strong>With Backup Manager installed and a schedule enabled, that fourth one does not stop your backups.<\/strong> The module watches for its own overdue event and calls <code>wp-cron.php<\/code> itself when it finds one, at most once every five minutes. So the constant on its own does not leave you without backups.<\/p>\n<p>It does not rescue the other three, and it does not rescue a quiet site either: that call is made while a page is being served, so if nobody arrives, nothing triggers it. And if <code>wp-cron.php<\/code> answers 401 or 403, the module&#8217;s call meets the same refusal WordPress does.<\/p>\n<p>Backup Manager&#8217;s Site Health check, <strong>Scheduled tasks<\/strong>, separates all four and names which one you have. It also tells you the thing that matters while you sort it out: <em>&#8220;Backups you start yourself are unaffected.&#8221;<\/em> A schedule that never fires does not break the backups you run by hand.<\/p>\n<p><strong>The fix is a real cron job.<\/strong> Add one on your server, every fifteen minutes:<\/p>\n<pre><code>*\/15 * * * * cd \/path\/to\/wordpress &amp;&amp; \/path\/to\/php -q wp-cron.php &gt;\/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>Then tell WordPress to stop trying on visits, in <code>wp-config.php<\/code>:<\/p>\n<pre><code>define(&#x27;DISABLE_WP_CRON&#x27;, true);<\/code><\/pre>\n<p>Order matters. Set the constant only once the cron job runs, or you will turn off the visit-driven scheduler and have nothing in its place.<\/p>\n<p>Where that line goes depends on your panel, and the two you are likeliest to meet differ.<\/p>\n<p><strong>cPanel: Advanced \u2192 Cron Jobs.<\/strong> Paste the whole line, schedule and command together, into the command field under <strong>Add New Cron Job<\/strong>. It then appears under <strong>Current Cron Jobs<\/strong>, which is where you confirm it took.<\/p>\n<p><strong>Plesk: Websites &#038; Domains \u2192 Scheduled Tasks \u2192 Add Task.<\/strong> Plesk splits the two, so paste only the command; the five schedule fields go in <strong>Cron style<\/strong>. Choose <strong>Run a command<\/strong>. <strong>Fetch a URL<\/strong> aimed at your own <code>wp-cron.php<\/code> looks easier \u2014 no PHP path, the step most people get stuck on \u2014 but it goes over HTTP and meets the same refusal as the first cause above. If your host answers 401 or 403 there, the fetch fails where a command would have worked.<\/p>\n<h2 id=\"codes\" style=\"scroll-margin-top: 96px;\">Reading the error code<\/h2>\n<p>When your job does stop, it stops with a code. The codes are stable strings, so one you find in a log a year from now still means what it means today.<\/p>\n<div class=\"aiows-article-table\" style=\"margin: 16px 0; overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">Code<\/th>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">What it means<\/th>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">Where to look<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E1000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The start request timed out before the server returned a job ID.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Host restrictions on detached processes; PHP-FPM request limits.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E1001<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The backup could not be started; no job was created.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The browser console and the server error log, at the moment you pressed Start.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E1002<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The worker could not be launched, and the inline fallback was unavailable.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Disabled <code>proc_open<\/code>\/<code>shell_exec<\/code>; a PHP CLI binary the host does not expose.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E2000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The browser lost contact with the progress endpoint.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Nothing. Check the backups list \u2014 the job may have finished.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E2001<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The progress could not be read from the server.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">A cache or security layer in front of the admin-ajax or REST endpoint.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E3000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The job stopped sending progress and was marked stalled.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The host&#8217;s process limits: the worker was probably killed.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E4000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The backup was cancelled.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Whoever cancelled it. Nothing failed.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E5000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The worker stopped on a PHP fatal error \u2014 out of memory, or a host limit.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>memory_limit<\/code>, <code>max_execution_time<\/code>, and the PHP error log.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E5001<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The worker stopped before the backup finished.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The same place. The host terminated it.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E6000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The backup finished and failed its integrity check.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Disk, and the destination. The package is not trustworthy.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\"><code>AIOWS-BK-E9000<\/code><\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Unknown.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The job&#8217;s own event log, then the PHP error log.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Two of these are not failures. <code>E2000<\/code> is your page losing the plot, and <code>E4000<\/code> is you. The rest tell you where to look, which is what a code is for.<\/p>\n<h2 id=\"stages\" style=\"scroll-margin-top: 96px;\">Where each stage runs out of room<\/h2>\n<p>Your backup is not one operation. It is four, and they fail on different resources.<\/p>\n<div class=\"aiows-article-table\" style=\"margin: 16px 0; overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">Stage<\/th>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">What it is doing<\/th>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">What runs out first<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Database export<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Reading tables row by row and writing SQL.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Memory and time. A single enormous table \u2014 <code>wp_postmeta<\/code>, an Action Scheduler table \u2014 can dominate the whole run.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">File walk and archive<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Walking the directory tree and compressing.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Time, then disk. Thousands of small files cost more than a few large ones.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Local write<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Assembling the package on disk.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Disk space. The package and the site need room at the same time.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Remote upload<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Sending to Google Drive, OneDrive, FTP or SFTP.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Time, network and the destination&#8217;s quota.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Knowing your stage narrows the cause to one column of that table before you change anything. A run that dies in the database stage is not a disk problem, and raising <code>memory_limit<\/code> will not help you if the job stopped during an upload.<\/p>\n<p>If your stage is the database and your site is large, one table is usually the answer rather than the limit \u2014 see <a href=\"https:\/\/allinonewpsettings.com\/blog\/why-is-my-wordpress-database-so-large\/\" target=\"_blank\" rel=\"noopener noreferrer\">why a WordPress database grows<\/a> before raising anything. If it is disk, the package size is the place to start: <a href=\"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-fails-because-disk-space-is-full\/\" target=\"_blank\" rel=\"noopener noreferrer\">a backup that fails because the disk is full<\/a>.<\/p>\n<h2 id=\"cancel\" style=\"scroll-margin-top: 96px;\">Cancelling without losing the evidence<\/h2>\n<p>Cancelling is often right. Cancelling first and looking afterwards is not: your first failure is the informative one, and a second run overwrites the conditions that caused it.<\/p>\n<p>The progress window shows two things worth writing down, and they are the two that disappear when you close it:<\/p>\n<ol>\n<li>the stage it stopped in;<\/li>\n<li>the elapsed time it had reached.<\/li>\n<\/ol>\n<p>Note the time of day as well, from your own clock \u2014 the window does not show one \u2014 so you can find the matching lines in the server logs afterwards.<\/p>\n<p>Three things you might expect to find there are simply not displayed: the backup ID, the amount processed, and the size of the partial package. The window carries a stage and a timer, so do not plan on copying an ID out of it.<\/p>\n<p>Then cancel, and leave the temporary files alone. A partial package that a worker still owns is not safe for you to delete: deleting it turns a slow job into a failed one and removes your evidence at the same time. Retention clears old packages on its own.<\/p>\n<h2 id=\"retry\" style=\"scroll-margin-top: 96px;\">The one retry, and what to change before it<\/h2>\n<p>One retry, after one change. Not three retries hoping.<\/p>\n<p><strong>Make room first.<\/strong> Check your free disk against the size of your last successful package. Your backup needs room for the new package while your site keeps running.<\/p>\n<p><strong>Then narrow the job.<\/strong> Run a <strong>Database Only<\/strong> backup, then a <strong>Files Only<\/strong> backup. Whichever one fails is the half with your problem, and each is small enough to finish where your full backup will not. Once you know which half, the guides for <a href=\"https:\/\/allinonewpsettings.com\/blog\/wordpress-database-only-backup\/\" target=\"_blank\" rel=\"noopener noreferrer\">a database-only backup<\/a> and <a href=\"https:\/\/allinonewpsettings.com\/blog\/wordpress-files-only-backup\/\" target=\"_blank\" rel=\"noopener noreferrer\">a files-only backup<\/a> cover the detail.<\/p>\n<p><strong>Exclude what you do not need to back up.<\/strong> Old archives inside <code>wp-content<\/code> are the classic case: your backup includes last month&#8217;s backups and grows every run until it cannot finish. You can usually leave out cache directories and generated media folders as well.<\/p>\n<p><strong>Change one limit, not all of them.<\/strong> If your code was <code>E5000<\/code> or <code>E5001<\/code>, raise <code>memory_limit<\/code> or <code>max_execution_time<\/code> \u2014 one of them, by one step, and run it again. Raising everything at once hides which limit was binding and puts load on your server for nothing. <a href=\"https:\/\/allinonewpsettings.com\/blog\/increase-wordpress-memory-limit\/\" target=\"_blank\" rel=\"noopener noreferrer\">Raising the memory limit safely<\/a> and <a href=\"https:\/\/allinonewpsettings.com\/blog\/how-to-fix-maximum-execution-time-exceeded-in-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">maximum execution time exceeded<\/a> cover the two individually.<\/p>\n<p><strong>Keep your last verified recovery point.<\/strong> Do not let a fresh package replace the last backup you have actually restored, until you have restored the fresh one too. A package that exists is not a package that works.<\/p>\n<h2 id=\"verification\" style=\"scroll-margin-top: 96px;\">Verification<\/h2>\n<p>Your backup is finished when you have restored it somewhere, not when a message says 100 percent.<\/p>\n<div class=\"aiows-article-table\" style=\"margin: 16px 0; overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">Check<\/th>\n<th style=\"text-align: left; padding: 8px 10px; border: 1px solid #dcdcde; background: #fafafa;\" scope=\"col\">Expected<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The package appears in the backups list, with its backup ID, its creation time, its type and its size.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Yes, and the size is in the same range as previous successful runs. There is no duration column and no destination column to check.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">The next scheduled run appears, and Site Health reports scheduled tasks as running.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Both. A schedule with no working scheduler is not a schedule.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Restore the package into a staging site or a local copy, and open the front page and one inner page.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Both load, and the content matches the day of the backup.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">Point the remote destination at wrong SFTP credentials and start one backup.<\/td>\n<td style=\"padding: 8px 10px; border: 1px solid #dcdcde; vertical-align: top;\">It fails at the transfer stage and says so: <em>Cloud upload failed: SFTP authentication failed.<\/em> The local package still completes and is saved.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>That fourth row was run, and two things it showed are worth knowing before you run it yourself.<\/p>\n<p><strong>The local package survives a failed transfer.<\/strong> With a remote destination the package is built on disk first and sent afterwards, so a refused login costs you the copy at the far end and not the backup. That is the design, and it is why a failed upload is not a failed backup.<\/p>\n<p><strong>The evidence does not last.<\/strong> The failure appears as a floating notice and is gone on the next page load. It is not written into the backups list, and the remote list holds no row for it. No <code>AIOWS-BK-E<\/code> code is shown either, although the catalogue has eleven of them. If you run this check, read the message while it is on screen, because afterwards the interface will not tell you it happened.<\/p>\n<p>A verification table whose every row is expected to pass only proves that you can read.<\/p>\n<p>If the restore is the part that goes wrong rather than your backup, that is its own subject: <a href=\"https:\/\/allinonewpsettings.com\/blog\/wordpress-restore-stuck-failed\/\" target=\"_blank\" rel=\"noopener noreferrer\">a WordPress restore that fails or hangs<\/a>. And if you have never tested one, <a href=\"https:\/\/allinonewpsettings.com\/blog\/verify-wordpress-backup\/\" target=\"_blank\" rel=\"noopener noreferrer\">verify a WordPress backup<\/a> is the place to start.<\/p>\n<section class=\"aiows-blog-cta\" style=\"margin: 38px 0; padding: 28px; border: 1px solid #cddcff; border-radius: 16px; background: #f6f9ff;\" aria-labelledby=\"aiows\">\n<p style=\"margin: 0 0 8px; font-size: 13px; font-weight: 800; letter-spacing: .05em; color: #1746a2;\">How AIOWS helps:<\/p>\n<h2 id=\"aiows\" style=\"margin: 0 0 14px; scroll-margin-top: 96px;\">AIOWS Backup Manager<\/h2>\n<p>Backup Manager runs your backup and, more usefully here, tells you which of the three situations above you are in.<\/p>\n<p><strong>It names the stage and the code.<\/strong> The progress window shows the stage and the elapsed time \u2014 the two things worth recording before you cancel, and the two that go when the window does. When your job stops, it stops with one of the eleven stable <code>AIOWS-BK-E<\/code> codes in the table above rather than with a generic failure message.<\/p>\n<p><strong>It checks the scheduler rather than trusting it.<\/strong> Backup Manager registers a <strong>Scheduled tasks<\/strong> test in WordPress Site Health. The test tells the four causes above apart and names yours, then prints a cron line built for your install, with the PHP binary it verified. Where it cannot verify that binary it says so and leaves a placeholder, rather than handing you a command that would fail silently at three in the morning.<\/p>\n<p><strong>It covers for the fourth cause rather than only reporting it.<\/strong> With a schedule enabled it calls <code>wp-cron.php<\/code> itself whenever its own event is overdue, so that constant with no cron job behind it does not quietly stop your backups.<\/p>\n<p><strong>It narrows the job for you.<\/strong> Full, <strong>Database Only<\/strong> and <strong>Files Only<\/strong> are one dropdown, and your exclude paths are one box, one path per line. Local, Google Drive, OneDrive and FTP\/SFTP are destinations you can add or remove without rebuilding your schedule.<\/p>\n<p><strong>It shows you what a restore actually did.<\/strong> The Restore Center keeps a receipt and a report for each one, so &#8220;it restored&#8221; becomes a record rather than your memory of one.<\/p>\n<p>Its limits, stated plainly. The module cannot raise your host&#8217;s PHP limits or your disk quota. The call it makes to the scheduler goes out while a page is being served, so it cannot fire on a site nobody visits; there it can only tell you that is what is happening and hand you the cron line. And it cannot stop a shared host from killing a long-running worker. Those three belong to your hosting provider.<\/p>\n<p style=\"margin-bottom: 0;\"><a style=\"display: inline-block; padding: 11px 17px; margin: 6px 8px 0 0; border-radius: 8px; background: #1557ff; color: #fff; text-decoration: none; font-weight: bold;\" href=\"https:\/\/allinonewpsettings.com\/features\/backup-manager\" target=\"_blank\" rel=\"noopener noreferrer\">Explore AIOWS Backup Manager<\/a><a style=\"display: inline-block; padding: 10px 16px; margin: 6px 8px 0 0; border: 1px solid #1557ff; border-radius: 8px; color: #1557ff; text-decoration: none; font-weight: bold; background: #fff;\" href=\"https:\/\/allinonewpsettings.com\/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Compare AIOWS plans<\/a><\/p>\n<figure class=\"aiows-article-figure\" style=\"margin: 28px 0;\"><img loading=\"eager\" fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-8702\" style=\"display: block; max-width: 100%; height: auto; border: 1px solid #dcdcde; border-radius: 12px;\" src=\"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en.webp\" alt=\"The Local Backups list: four completed packages, each row showing a backup ID, the date and time it was created, the type Full, and a size of about 132 megabytes.\" width=\"2400\" height=\"1222\" srcset=\"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en.webp 2400w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en-300x153.webp 300w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en-1024x521.webp 1024w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en-768x391.webp 768w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en-1536x782.webp 1536w, https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/backups-list-finished-en-2048x1043.webp 2048w\" sizes=\"(max-width: 2400px) 100vw, 2400px\"  \/><figcaption style=\"margin: 8px 0 0; font-size: 14px; line-height: 1.5; color: #50575e;\">If your package is in this list, the job finished \u2014 whatever the progress window last showed.<\/figcaption><\/figure>\n<\/section>\n<h2 id=\"faq\" style=\"scroll-margin-top: 96px;\">Frequently asked<\/h2>\n<p><strong>The bar has not moved in ten minutes. Is the backup dead?<\/strong> Not necessarily. Close the window and look at your backups list. If your package is there, it finished. If it is not, check whether the file on disk is still growing before you cancel.<\/p>\n<p><strong>Can I close the tab while a backup runs?<\/strong> Yes. The worker runs on your server, not in your browser. Closing the tab stops your progress bar, not your backup.<\/p>\n<p><strong>Why did my scheduled backup not run at all?<\/strong> Most likely nobody visited your site near the scheduled time, because WordPress&#8217;s built-in scheduler runs on visits rather than on a clock. Site Health&#8217;s <strong>Scheduled tasks<\/strong> check will tell you which of the four causes you have.<\/p>\n<p><strong>Is it safe to delete the leftover files from a failed backup?<\/strong> Only when no worker still owns them. If a job may still be running, leave them \u2014 retention removes your old packages on its own.<\/p>\n<p><strong>The backup completed but the file is enormous. Is that a failure?<\/strong> No, but it usually means you are including something twice, and old archives inside <code>wp-content<\/code> are the common case. Exclude them and run it again.<\/p>\n<h2 id=\"official-sources\" style=\"scroll-margin-top: 96px;\">Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/cron\/\" target=\"_blank\" rel=\"noopener noreferrer\">WP-Cron \u2014 WordPress Developer Resources<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/cron\/hooking-wp-cron-into-the-system-task-scheduler\/\" target=\"_blank\" rel=\"noopener noreferrer\">Hooking WP-Cron Into the System Task Scheduler<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/documentation\/article\/backing-up-your-wordpress-files\/\" target=\"_blank\" rel=\"noopener noreferrer\">Backing Up Your WordPress Files \u2014 WordPress Documentation<\/a><\/li>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/ini.core.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP runtime configuration: <code>memory_limit<\/code> and <code>max_execution_time<\/code><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Three things look identical on that screen: a job still working, a job that finished while nobody was looking, and a job that never started. How to tell them apart.<\/p>\n","protected":false},"author":1,"featured_media":7377,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[80],"tags":[],"class_list":["post-1119","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-backup-manager"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.0 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>WordPress Backup Stuck? How to Tell If It Is Still Running<\/title>\n<meta name=\"description\" content=\"A WordPress backup stuck at 45 percent is usually still running. How to tell a live job from a finished one, and from one that never started.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress Backup Stuck or Failing? Find the Cause and Fix It\" \/>\n<meta property=\"og:description\" content=\"A WordPress backup stuck at 45 percent is usually still running. How to tell a live job from a finished one, and from one that never started.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/\" \/>\n<meta property=\"og:site_name\" content=\"All in One WP Settings\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-05T15:22:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-16T13:22:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/wordpress-backup-stuck-failing-en.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"All in One WP Settings\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"All in One WP Settings\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/\"},\"author\":{\"name\":\"All in One WP Settings\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#\\\/schema\\\/person\\\/daa924a7f9a0d0fbe18ea77286693c57\"},\"headline\":\"WordPress Backup Stuck or Failing? Find the Cause and Fix It\",\"datePublished\":\"2026-03-05T15:22:54+00:00\",\"dateModified\":\"2026-10-16T13:22:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/\"},\"wordCount\":3011,\"publisher\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wordpress-backup-stuck-failing-en.webp\",\"articleSection\":[\"Backup Manager\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/\",\"url\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/\",\"name\":\"WordPress Backup Stuck? How to Tell If It Is Still Running\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wordpress-backup-stuck-failing-en.webp\",\"datePublished\":\"2026-03-05T15:22:54+00:00\",\"dateModified\":\"2026-10-16T13:22:01+00:00\",\"description\":\"A WordPress backup stuck at 45 percent is usually still running. How to tell a live job from a finished one, and from one that never started.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#primaryimage\",\"url\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wordpress-backup-stuck-failing-en.webp\",\"contentUrl\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wordpress-backup-stuck-failing-en.webp\",\"width\":1440,\"height\":720,\"caption\":\"WordPress Backup Stuck or Failing? Find the Cause and Fix It\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wordpress-backup-stuck-failing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress Backup Stuck or Failing? Find the Cause and Fix It\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/\",\"name\":\"All in One WP Settings\",\"description\":\"Fewer plugins. Faster WordPress.\",\"publisher\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#organization\",\"name\":\"All in One WP Settings\",\"url\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/aiows-logo.webp\",\"contentUrl\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/aiows-logo.webp\",\"width\":772,\"height\":250,\"caption\":\"All in One WP Settings\"},\"image\":{\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/#\\\/schema\\\/person\\\/daa924a7f9a0d0fbe18ea77286693c57\",\"name\":\"All in One WP Settings\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/aiows-avatar\\\/user-1.jpg\",\"url\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/aiows-avatar\\\/user-1.jpg\",\"contentUrl\":\"https:\\\/\\\/allinonewpsettings.com\\\/blog\\\/wp-content\\\/uploads\\\/aiows-avatar\\\/user-1.jpg\",\"caption\":\"All in One WP Settings\"},\"sameAs\":[\"https:\\\/\\\/allinonewpsettings.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress Backup Stuck? How to Tell If It Is Still Running","description":"A WordPress backup stuck at 45 percent is usually still running. How to tell a live job from a finished one, and from one that never started.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/","og_locale":"en_US","og_type":"article","og_title":"WordPress Backup Stuck or Failing? Find the Cause and Fix It","og_description":"A WordPress backup stuck at 45 percent is usually still running. How to tell a live job from a finished one, and from one that never started.","og_url":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/","og_site_name":"All in One WP Settings","article_published_time":"2026-03-05T15:22:54+00:00","article_modified_time":"2026-10-16T13:22:01+00:00","og_image":[{"width":1440,"height":720,"url":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/wordpress-backup-stuck-failing-en.webp","type":"image\/webp"}],"author":"All in One WP Settings","twitter_card":"summary_large_image","twitter_misc":{"Written by":"All in One WP Settings","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#article","isPartOf":{"@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/"},"author":{"name":"All in One WP Settings","@id":"https:\/\/allinonewpsettings.com\/blog\/#\/schema\/person\/daa924a7f9a0d0fbe18ea77286693c57"},"headline":"WordPress Backup Stuck or Failing? Find the Cause and Fix It","datePublished":"2026-03-05T15:22:54+00:00","dateModified":"2026-10-16T13:22:01+00:00","mainEntityOfPage":{"@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/"},"wordCount":3011,"publisher":{"@id":"https:\/\/allinonewpsettings.com\/blog\/#organization"},"image":{"@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#primaryimage"},"thumbnailUrl":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/wordpress-backup-stuck-failing-en.webp","articleSection":["Backup Manager"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/","url":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/","name":"WordPress Backup Stuck? How to Tell If It Is Still Running","isPartOf":{"@id":"https:\/\/allinonewpsettings.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#primaryimage"},"image":{"@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#primaryimage"},"thumbnailUrl":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/wordpress-backup-stuck-failing-en.webp","datePublished":"2026-03-05T15:22:54+00:00","dateModified":"2026-10-16T13:22:01+00:00","description":"A WordPress backup stuck at 45 percent is usually still running. How to tell a live job from a finished one, and from one that never started.","breadcrumb":{"@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#primaryimage","url":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/wordpress-backup-stuck-failing-en.webp","contentUrl":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/09\/wordpress-backup-stuck-failing-en.webp","width":1440,"height":720,"caption":"WordPress Backup Stuck or Failing? Find the Cause and Fix It"},{"@type":"BreadcrumbList","@id":"https:\/\/allinonewpsettings.com\/blog\/wordpress-backup-stuck-failing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/allinonewpsettings.com\/blog\/"},{"@type":"ListItem","position":2,"name":"WordPress Backup Stuck or Failing? Find the Cause and Fix It"}]},{"@type":"WebSite","@id":"https:\/\/allinonewpsettings.com\/blog\/#website","url":"https:\/\/allinonewpsettings.com\/blog\/","name":"All in One WP Settings","description":"Fewer plugins. Faster WordPress.","publisher":{"@id":"https:\/\/allinonewpsettings.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/allinonewpsettings.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/allinonewpsettings.com\/blog\/#organization","name":"All in One WP Settings","url":"https:\/\/allinonewpsettings.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/allinonewpsettings.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/07\/aiows-logo.webp","contentUrl":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/2026\/07\/aiows-logo.webp","width":772,"height":250,"caption":"All in One WP Settings"},"image":{"@id":"https:\/\/allinonewpsettings.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/allinonewpsettings.com\/blog\/#\/schema\/person\/daa924a7f9a0d0fbe18ea77286693c57","name":"All in One WP Settings","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/aiows-avatar\/user-1.jpg","url":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/aiows-avatar\/user-1.jpg","contentUrl":"https:\/\/allinonewpsettings.com\/blog\/wp-content\/uploads\/aiows-avatar\/user-1.jpg","caption":"All in One WP Settings"},"sameAs":["https:\/\/allinonewpsettings.com\/blog"]}]}},"lang":"en","translations":{"en":1119,"de":1120,"tr":1121},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/posts\/1119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/comments?post=1119"}],"version-history":[{"count":3,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/posts\/1119\/revisions"}],"predecessor-version":[{"id":8721,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/posts\/1119\/revisions\/8721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/media\/7377"}],"wp:attachment":[{"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/media?parent=1119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/categories?post=1119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/allinonewpsettings.com\/blog\/wp-json\/wp\/v2\/tags?post=1119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}