wpbackup.ru wordpress WPBackup.ru

Автоматизация удаления старых резервных копий WooCommerce

Зачем автоматизировать удаление старых резервных копий WooCommerce

При работе с WooCommerce количество резервных копий сайта и базы данных быстро растёт, занимая дисковое пространство и снижая производительность сервера. Автоматическое удаление старых резервных копий помогает удерживать баланс между безопасностью и экономией ресурсов, избегая переполнения хранилища, что особенно важно при использовании ограниченных хостинг-планов.

Диагностика проблемы с накоплением резервных копий

Чтобы проверить, есть ли проблема, выполните следующие действия:

  • Подключитесь к серверу по SSH или через файловый менеджер хостинга.
  • Перейдите в папку с резервными копиями WooCommerce (обычно wp-content/backups/woocommerce или аналогичная).
  • Выполните команду для подсчёта файлов и оценки их общего объёма:
ls -lh wp-content/backups/woocommerce | wc -l
 du -sh wp-content/backups/woocommerce

Если количество файлов и занимаемое пространство растут без контроля, пора внедрять автоматизацию очистки.

Пошаговое решение: настройка автоматического удаления старых резервных копий

1. Использование WP-CLI для удаления файлов старше N дней

WP-CLI позволяет выполнять задачи резервного копирования и очистки из командной строки. Чтобы автоматизировать удаление файлов старше, например, 30 дней, можно использовать команду find в cron-задании.

# Команда для удаления файлов старше 30 дней в каталоге резервных копий WooCommerce
find /path/to/wp-content/backups/woocommerce -type f -mtime +30 -name '*.zip' -delete
<

2. Создание cron-задания на сервере

Добавьте cron-задание через crontab для регулярного запуска команды, например, каждую ночь в 2:00:

0 2 * * * find /path/to/wp-content/backups/woocommerce -type f -mtime +30 -name '*.zip' -delete

Замените /path/to/wp-content/backups/woocommerce на реальный путь к папке резервных копий.

3. Встраивание очистки в WordPress с помощью хуков

Если нет доступа к crontab, можно реализовать удаление внутри WordPress, используя wp_schedule_event и функцию очистки:

function wpbackup_delete_old_woocommerce_backups() {
    $backup_dir = WP_CONTENT_DIR . '/backups/woocommerce';
    if ( ! is_dir( $backup_dir ) ) {
        return;
    }
    $files = glob( $backup_dir . '/*.zip' );
    $now = time();
    foreach ( $files as $file ) {
        if ( $now - filemtime( $file ) > 30 * DAY_IN_SECONDS ) {
            @unlink( $file );
        }
    }
}

// Регистрируем событие при активации темы или плагина
if ( ! wp_next_scheduled( 'wpbackup_daily_cleanup' ) ) {
    wp_schedule_event( time(), 'daily', 'wpbackup_daily_cleanup' );
}
add_action( 'wpbackup_daily_cleanup', 'wpbackup_delete_old_woocommerce_backups' );

Проверка результата после внедрения

  • Для cron-задания: проверьте логи сервера или выполните команду вручную для теста.
  • Для WordPress-функции: запустите вручную функцию wpbackup_delete_old_woocommerce_backups() через WP-CLI или временно вызовите её в functions.php.
  • Проверьте папку резервных копий: файлы старше 30 дней должны быть удалены.
  • Контролируйте свободное место на диске и количество копий после нескольких дней работы.

Частые ошибки и как их исправить

  • Неправильный путь к папке резервных копий: Убедитесь, что путь абсолютный и корректный. Используйте WP_CONTENT_DIR в функциях WordPress.
  • Недостаточно прав на удаление файлов: Проверьте права доступа и владельца папки и файлов. Используйте chmod и chown при необходимости.
  • Cron-задание не выполняется: Убедитесь, что сервис cron запущен и задание добавлено в crontab пользователя, под которым работает сервер.
  • Удаление происходит слишком часто или не происходит вовсе: Проверьте логи и корректность времени в условии -mtime +30 или в PHP-функции.
  • Удаление нужных файлов: всегда проверяйте шаблон имени файлов -name '*.zip', чтобы не удалить что-то лишнее.

Практические советы по безопасности и производительности

  • Убедитесь, что директория с резервными копиями недоступна из интернета (через .htaccess или настройки сервера).
  • Храните резервные копии не только локально, но и на удалённых сервисах (например, Amazon S3, Google Drive) с помощью проверенных плагинов.
  • Автоматизируйте очистку только после проверки стабильности и полноты резервных копий.
  • Используйте инкрементальное резервное копирование для снижения нагрузки на сервер.
  • Внедряйте мониторинг пространства диска и уведомления о достижении лимитов.

Сравнение вариантов автоматизации удаления резервных копий WooCommerce

МетодПлюсыМинусыТребования
cron + findПростота, не требует загрузки WordPress, стабильностьНужен доступ к серверу и crontabSSH, права на crontab
WP-Cron + PHP-функцияНе нужен доступ к серверу, интегрировано в WordPressWP-Cron зависит от посещаемости сайта, возможны задержкиДоступ к редактированию кода сайта
Плагины резервного копирования с функцией очисткиУдобство интерфейса, дополнительные опцииМогут тормозить сайт, платные функцииУстановка и настройка плагина
×
-15%
на премиум плагин
Clearfy

Защитите сайт!

Включить Clearfy »