---
type: "product"
id: 351
url: "https://prestadev.pl/en/backup-i-odtwarzanie-sklepu-pro-automatyczne-kopie-zapasowe-prestashop-z-odtwarzaniem-z-panelu-i-bez-panelu.html"
markdown_url: "https://prestadev.pl/en/markdown/product/351.md"
title: "Store Backup and Restore Pro – automatic PrestaShop backups with restoration from the admin panel and without the admin panel"
image: "https://prestadev.pl/3557/store-backup-and-restore-pro-automatic-prestashop-backups-with-restoration-from-the-admin-panel-and-without-the-admin-panel.jpg"
sku: "PDBARPRO"
brand: "PrestaDev.pl"
price: 178.00
price_tax_excluded: 144.72
currency: "PLN"
tax_included: true
availability: "in_stock"
is_pack: false
customization_required: false
condition: "new"
categories: ["Data import and export", "PrestaShop modules", "Security, cookies and regulations"]
language: "en"
updated: "2026-10-05"
---

# Store Backup and Restore Pro – automatic PrestaShop backups with restoration from the admin panel and without the admin panel

**Backup and Restore Store Pro** is a PrestaShop module that creates scheduled backups of the entire store – files and database – verifies each backup, and sends it outside the store server. Backups can be sent to a second disk or NAS drive, to an FTP, FTPS, or SFTP server, and to S3-compatible storage (Amazon S3, Backblaze B2, Wasabi, Cloudflare R2, Hetzner, OVH, MinIO), while retention rules automatically remove older backups. Each task runs in short steps and resumes where it stopped, so the module also works on shared hosting with a short script execution time limit – from cron, from the command line, or from the browser. Backups can be encrypted with a password (AES-256), and each backup chunk has a SHA-256 checksum, verified immediately after the backup is created and during a test restore. You can restore the store from the admin panel in three steps – the whole store, the database only, the files only, selected tables, or selected directories – and the module can first save the current state, so the restore itself can be rolled back. When the admin panel does not open at all, a single `pdrestore.php` file restores the backup without a working PrestaShop, even on an empty server. The dashboard tells you in one sentence whether the store is protected and points out what is missing, while an email is sent when a backup fails or when there has been no backup for too long. The module works with PrestaShop 1.7.0–9.x and PHP 7.0–8.5, without Composer, without additional libraries, and without running system commands.

## Description

## What the module is for

 - **Protection from the very first minute.** Installation creates the “Daily full backup” profile: files and database every night at 03:00, seven latest backups on the server. Scheduled backups require a cron call every few minutes or a trigger from the back office – the dashboard shows the ready URL and command.
- **A backup that survives a server failure.** A backup stored only on the same server as the shop is lost together with it. The module sends every completed backup to selected off-server locations and warns on the dashboard when no such location exists.
- **Protection before an update.** The “Quick snapshot before update” button copies the database plus modules, themes, overrides and configuration – what an update can break – without the mass of images, in a fraction of the time of a full backup.
- **Recovery after a failure, hack or unsuccessful change.** Restore the entire shop or only part of it: database, files, one table or one directory, for example a theme.
- **Restore to a new server.** The emergency script `pdrestore.php` restores the shop from a backup on an empty server, without PrestaShop installed – after losing the server or when changing hosting under the same shop address.

 ## What goes into the backup

 ### Five backup scopes

 - **Files and database** – everything needed to rebuild the shop (recommended).
- **Database only** – a small and fast backup, good for frequent backups between full ones.
- **Files only** – images, modules, themes and the remaining shop files.
- **Quick snapshot** – database and the directories modules, themes, override, config, app/config, mails, translations, classes and controllers.
- **Custom scope** – database and selected top-level directories; loose files in the root directory (index.php, .htaccess and similar) are always included.

 ### Database

 - **Dump in pure PHP.** Tables, views, triggers, procedures, functions and events, without the mysqldump tool and without access to the server shell.
- **Shop tables or the entire database.** By default, tables with the shop prefix are copied; one option includes all tables in the database, for example tables of an external integration.
- **Tables without rows and skipped tables.** Visit statistics, search index, cache and logs go into the backup as structure only. Custom lists let you add more tables copied without rows or skip tables completely.
- **Closing the shop for the duration of database backup.** A profile option switches the shop to maintenance mode only for the minutes of the database dump, so that no order is captured halfway through saving, and opens it again – also when the backup fails.

 ### Files and exclusions

 - **Always skipped.** Cache, logs, sessions, temporary images, .git and node\_modules directories, the module’s own backup directory, and backup directories of other backup modules and the update module.
- **Custom exclusions.** Skipped paths with wildcard symbols (themes/\*/cache, \*\*/name), skipped file types (e.g. zip, mp4, psd) and a size limit for a single file.
- **Thumbnails and product images.** Separate options skip image thumbnails (they can be generated from originals) or the entire product images directory when images have their own backup.
- **Files changed during backup.** A file changed, deleted or unreadable during copying is recorded in the log, and the backup continues.

 ### Compression and file splitting

 - **Four gzip compression levels** – none, light, recommended and strongest. Data that does not compress (images, archives) is automatically saved by the module without compression, saving time.
- **Backup split into files** of the selected size (default 256 MB, from 16 to 4096 MB), so uploads can be resumed and file size limits on hosting do not get in the way. Shop files larger than 2 GB are supported.

 ## Schedule and automatic backups

 - **Backup profiles.** Each profile has its own scope, schedule, destinations, old backup deletion rules and encryption – for example a full backup daily and additionally the database alone every few hours.
- **Schedule.** Manual only, every few hours (from 1 to 24 hours or every 2–7 days), daily, on selected days of the week or once a month (in a shorter month – on the last day), at an hour in the shop time zone.
- **Three launch methods.** Cron URL with a secret token (called every 5 minutes, new URL in one click), command line `php modules/pdbackupandrestorepro/cli.php` with the commands cron, run and status – without a time limit – and a trigger from the back office for hosting without cron, which starts an overdue backup when an employee visits the back office.
- **Short, resumable steps.** You set the time of one step from 5 to 120 seconds (20 recommended). After each step, progress is saved, and the cron URL automatically calls the next step; when the server does not allow it, the backup is continued by the next cron call.
- **Live progress.** Progress bar, current stage and latest events. Closing the browser tab does not interrupt the backup, and the “Stop” button ends it at the nearest safe point.
- **One task at a time.** A database lock and a file lock prevent two processes (e.g. cron and a browser tab) from performing the same backup at the same time. A task that makes no progress three times in a row ends with an error with the given reason.

 ## Where to store backups: disk, NAS, FTP, FTPS, SFTP, S3

 - **Another directory on the same server** – a second disk or a mounted network disk (NAS), outside the shop directory.
- **FTP and FTPS.** FTPS encrypts the connection and verifies the server certificate (verification can be disabled for your own server with a self-signed certificate); passive or active mode.
- **SFTP (SSH).** Login by password or private key (RSA in PEM format or an OpenSSH key, also password-protected; ed25519 keys where supported by the hosting cURL) and an optional server key fingerprint, with which the module talks only to the correct server.
- **S3-compatible storage.** Amazon S3, Backblaze B2, Wasabi, Cloudflare R2, Hetzner, OVH, MinIO and other S3-compatible services: service URL, region, bucket, directory in the bucket (several shops in one bucket) and bucket-in-path addressing. Large files are uploaded in parts, and the module never changes the bucket’s own settings.
- **Connection test.** The “Test connection” button writes, reads and deletes a test file, and when the service provides it – shows free space. The result of the last test is visible on the destination list.
- **Resumable upload.** The backup is sent to selected destinations one by one and in parts; an interrupted upload resumes from where it stopped, and on FTP, FTPS and SFTP servers the size of the uploaded file is compared with the original. Remains of a backup that could not be uploaded are removed from the destination.
- **Restore script together with the backup.** By default, `pdrestore.php` is also sent to every off-server location, so the backup can be restored even when the shop and its back office no longer exist.

 ## Deleting old backups (retention)

 - **At destinations.** Number of latest backups kept in each location, deletion of backups older than the selected number of days, and long history according to the day–week–month scheme: additionally the latest backup from each of the last days, weeks or months.
- **On this server.** Separate number of latest backups and separate age limit. If there is no disk space, the profile can delete the backup from the server when it reaches at least one destination.
- **What the rules do not delete.** The latest good backup, backups marked as protected (on the backup list or for the entire profile, e.g. snapshots before update) and a backup from which a restore has been prepared. Old backups are deleted only after the new backup reaches its destination.
- **Cleaning up leftovers.** When the profile does not keep backups on the server, backups downloaded for restore disappear from the server after a week, and of backups that could not be uploaded, the two latest remain there. A deletion interrupted halfway is retried. Of backups made from the command line without a profile, the seven latest remain on the server.

 ## Backup encryption and security

 - **AES-256 with integrity control.** Each backup chunk is encrypted with AES-256 (CTR mode) and signed with HMAC-SHA256; the key is derived from the password by PBKDF2-SHA256 (200,000 iterations). The backup file list is also encrypted, so file names are not visible.
- **Tampering detection.** The backup description (manifest) is signed, and each chunk is tied to the backup, file and position in the file – a replaced, rearranged or inserted chunk from another backup will not pass verification.
- **Backup password.** At least 12 characters, entered twice, stored in encrypted form and never shown anywhere again. Without the password, no one can restore an encrypted backup, including the module author. The new password applies to future backups.
- **Encrypted login data.** Passwords and keys of destinations are stored in the database in encrypted form and do not return to the form.
- **Backup directory closed to the internet.** On installation, the module chooses a directory outside the public part of the site, if hosting allows it; otherwise a folder with a random name with protective files. The “Check from the internet” button on the dashboard checks whether files from the directory can be downloaded, and for nginx provides a ready blocking rule.
- **Warnings in the back office.** The profile list warns when unencrypted backups go off-server, and the destination list – when an SFTP location does not verify the server key.
- **No connections to the author’s servers.** The module does not send data to the author and does not run system commands; apart from your own shop, it connects only to destinations and the monitoring URL that you set yourself.

 ## Backup verification and test restore

 - **Checking every backup.** After creation, the backup is read again, and SHA-256 checksums of all its chunks are compared with the saved ones. On the list, the backup then has the status “verified”.
- **Test restore.** Full reading of the backup – decryption, decompression, archive check and counting SQL statements against the backup description – without any changes in the shop. A backup stored only off-server is downloaded for this.
- **Reminder.** The dashboard marks when no backup has been fully read in the last month.

 ## Restoring the shop from a backup in the back office

 - **Three-step wizard.** Backup selection, selection of what should be restored, and confirmation by entering the shop address. Nothing changes until confirmation.
- **Five restore scopes.** Everything that is in the backup; database only; files only; selected tables; selected directories (e.g. themes/classic or img/p).
- **Current state first.** The recommended option makes a protected backup before restore of what will be replaced – for encrypted backups, encrypted with the profile password. If the restore turns out to be a mistake, you return to the state before it.
- **Checks before start.** Free disk space, write permission in the shop directory, table prefix compatibility, the PrestaShop version from which the backup comes, and the password of the encrypted backup. Warnings are shown before confirmation.
- **Safe execution.** During restore, the shop is closed to customers and opened again at the end. Restore works on a separate page outside the back office, because the back office itself is replaced during that time; after interruption it resumes from where it stopped, and the page removes itself after completion.
- **Settings file and login.** The PrestaShop settings file comes from the backup, but keeps the database connection of the current server. After restoring the database, employees log in with accounts from the day the backup was made.
- **Backups from outside the server.** A backup stored only in a destination is downloaded by the “Download and check” button and immediately fully read before it is used for restore.
- **Backups from a newer database server.** When restoring a backup made on a newer version of MySQL or MariaDB, unknown collations and removed SQL modes are replaced with equivalents, and remaining errors are reported.
- **Interrupted restore.** A restore that gives no sign of life for 10 minutes can be abandoned from the back office – the shop is reopened and backups are performed again.

 ## Emergency restore without the back office: pdrestore.php

 - **One file.** You can download `pdrestore.php` from the Restore tab; by default it is also placed in every destination next to the backup.
- **Without PrestaShop.** You upload the script together with the backup files (names starting with pdbr-) to the shop directory and open it in the browser. If there is no shop on the server, the script asks for database details.
- **Proof of server access.** The script creates a file with a code next to itself that must be retyped – no outsider who knows the script address will use it.
- **Resume and cleanup.** After a broken connection, restore starts from the last completed step, and at the end the script removes itself from the server with one button. Interface in Polish and English.

 ## Dashboard: is the shop protected?

 - **Assessment in one sentence.** For example “The shop is protected. The last backup is from …, the next one is scheduled for …” or a specific problem: no backup, failed backup, backup too old, cron not working, no off-server location, backup directory open from the internet.
- **Checklist.** Last backup, its age, schedule, cron, off-server backup, backup directory, notifications and test restore – each item with a button leading to the place where you fix it.
- **Tiles, chart and events.** Last good backup, next backup, number of backups on the server (with their size) and in each destination, free disk space, chart of size and time of recent backups, and recent events from the log.
- **Four questions to start.** What to back up, where to keep backups, when, and whom to notify – the answers are saved in the profile. You can add a new destination during the process, and after a successful connection test you return to the questions with that location selected.
- **Environment test.** PHP version, extensions, time and memory limits, backup directory and free disk space – with an explanation of what each limitation means.
- **Header on every tab.** Last good backup, nearest scheduled backup and protection status visible from every page of the module.

 ## Email notifications and monitoring

 - **Alerts.** Email when a backup fails; when a backup is created but does not reach all destinations; when a profile has nowhere to send it; when a scheduled backup could not start; and when there has been no successful backup for the configured time (48 hours by default).
- **Confirmations.** Optional email after every successful backup, with its size and the number of locations where it is stored.
- **Recipients and language.** Any list of addresses (empty field = shop email address); messages in the shop default language, in Polish or in English.
- **Monitoring URL (heartbeat).** Called after every successful backup, so an external monitoring service will notify you when backups stop being created. Settings show when cron last checked in, and the dashboard alerts when cron has stopped calling the shop.

 ## Backup list and log

 - **Backup list.** Profile, contents, size, duration, storage locations, verification result and protection. Backup details: size before compression, number of files and tables, encryption, and the PrestaShop and module versions that created it.
- **Actions on a backup.** Download backup files to your own computer (with the option to resume downloading), note, protection against automatic deletion, test restore, restore and deletion from all locations at once.
- **Find backups in the directory.** Backups lying in the backup directory but absent from the list (e.g. moved from another server) are added to the list with one button.
- **Log.** Every step of backup, upload and restore with a clear, translated message; filtering and downloading the log as a text file. Backup downloads, restores and abandoned restores – with the employee name – are kept for two years, other entries for six months.

 ## Open backup format

 - **Regular .tar.gz archives.** An unencrypted backup can be opened by any archive program (7-Zip, WinRAR, tar), and the database is inside as SQL files in the db directory – the backup does not lock you into the module.
- **Independent chunks.** Each backup file consists of chunks compressed and checked separately, so backup, verification, upload and restore can be resumed after an interruption.

 ## Permissions, multistore and uninstallation

 - **Employee permissions.** An employee with view permission sees backups, progress and the log; starting backups, downloading backup files, restoring and changing settings require edit permission. Every action in the back office checks the security token and permissions.
- **Multistore.** The backup covers the entire PrestaShop installation – all shops at once – and the module settings are shared for the installation.
- **Uninstallation.** Removes module settings, schedules and backup history. Backup files on disk and in destinations remain.

 ## Requirements and compatibility

 - **PrestaShop 1.7.0–9.x, PHP 7.0–8.5 (64-bit), MySQL 5.6+ or MariaDB 10+.**
- **PHP extensions.** zlib (compression, required), OpenSSL (backup encryption and protection of login data), cURL (FTP, FTPS, SFTP, S3, checking the backup directory from the internet and the monitoring URL); SFTP requires cURL built with SFTP support. The mbstring.func\_overload setting must be disabled.
- **Low memory requirements.** The backup engine itself needs about 20 MB of memory; a short request time limit is not a problem.
- **No dependencies.** No Composer, no bundled libraries, no exec and no shell commands.
- **Languages.** Module interface, emails and restore script in Polish and English.

 ## Important operating limits (version 1.0)

 - Restore under a different shop address or to a database with a different table prefix is not supported – the module refuses before the first change.
- Each backup is a full backup of its scope; incremental backups are not available.
- Google Drive and Dropbox are not among the destinations.
- Restore does not remove files or tables that appeared in the shop after the backup was made.
- Views, triggers and procedures are restored only when restoring the entire database.
- A database backup performed by cron URL or browser is created in many short steps; in a busy shop, the option to close the shop during database backup or running backups from the command line is recommended.
- Scheduled backups require cron; the back office trigger is an emergency fallback dependent on employee visits.
- The emergency script requires the backup description file (name ending with .manifest.json).
- Uninstallation leaves files of a started and unfinished restore in the shop directory (pdbr-restore-\*) – they must be completed, abandoned in the back office or removed manually.
- For two years, the log stores the names of employees who downloaded a backup or restored the shop – it is worth taking this into account in the record of personal data processing activities.

## Features

| Feature | Value |
| --- | --- |
| Prestashop 9.x support | Yes |
| Support for Prestashop 8.x | Yes |
| Prestashop 1.7.x support | Yes |
| Module translations | EN, ENG |
| Free support | Yes |
| Free updates (1 year) | Yes |

## Categories

- Data import and export
- PrestaShop modules
- Security, cookies and regulations
