wpbackup.ru wordpress WPBackup.ru

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

Почему важно удалять старые резервные копии WooCommerce

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

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

Для начала проверьте, сколько резервных копий хранится на вашем сервере и какую они занимают память. Это можно сделать через SSH или панель хостинга:

du -sh /path/to/backups/*
ls -lh /path/to/backups/ | wc -l

Если файлов слишком много или общий объем превышает допустимый лимит, нужно настроить автоматическое удаление.

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

1. Определите критерии удаления

  • Удаление копий старше N дней
  • Оставление последних M копий без ограничения по дате
  • Исключение копий, связанных с критическими обновлениями

2. Используйте WP-CLI для интеграции в WordPress

Для автоматического удаления резервных копий можно написать кастомный WP-CLI скрипт, который будет запускаться по расписанию.

if ( ! defined( 'WP_CLI' ) ) {
    return;
}

class Cleanup_Backups_Command {
    /**
     * Удалить резервные копии старше заданного количества дней
     *
     * ## OPTIONS
     *
     * <days>
     * : Количество дней для хранения резервных копий
     *
     * ## EXAMPLES
     *
     *     wp cleanup_backups delete_old 30
     *
     * @when after_wp_load
     */
    public function delete_old( $args, $assoc_args ) {
        list( $days ) = $args;
        $backup_dir = WP_CONTENT_DIR . '/backups';
        $files = glob( $backup_dir . '/*.zip' );
        $now = time();
        $deleted = 0;

        foreach ( $files as $file ) {
            if ( is_file( $file ) ) {
                $file_mtime = filemtime( $file );
                $age = ( $now - $file_mtime ) / DAY_IN_SECONDS;
                if ( $age > $days ) {
                    unlink( $file );
                    $deleted++;
                }
            }
        }

        WP_CLI::success( "Удалено $deleted резервных копий старше $days дней." );
    }
}

WP_CLI::add_command( 'cleanup_backups', 'Cleanup_Backups_Command' );

3. Настройте крон-задачу на сервере

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

0 3 * * * /usr/bin/wp cleanup_backups delete_old 30 --path=/var/www/html/wordpress --allow-root >/dev/null 2>&1

4. Исключение важных копий из удаления

Если у вас есть резервные копии с определённым префиксом или в отдельной папке, измените скрипт, чтобы он их не трогал. Например, пропускайте файлы с "critical" в имени:

if ( strpos( basename($file), 'critical' ) !== false ) {
    continue;
}

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

  • Проверьте папку с резервными копиями через файловый менеджер или SSH. Старые файлы должны быть удалены, свежие — остаться.
  • Запустите WP-CLI вручную: wp cleanup_backups delete_old 1 и убедитесь, что удаление происходит без ошибок.
  • Просмотрите логи cron (например, в /var/log/cron.log), чтобы удостовериться, что задача выполняется по расписанию.

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

  • Ошибка доступа к папке резервных копий: убедитесь, что пользователь, под которым запускается cron, имеет права на чтение и удаление файлов.
  • Неправильный путь к WordPress в cron: всегда указывайте точный путь в параметре --path для WP-CLI.
  • Удаление нужных копий: добавьте проверку на префикс или дату создания, чтобы не удалить важные архивы.
  • WP-CLI не установлен или не доступен: проверьте, что команда wp доступна в cron окружении.

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

  • Храните резервные копии вне публичной директории сайта, чтобы исключить доступ по URL.
  • Регулярно проверяйте свободное место на диске, чтобы избежать сбоев при создании бэкапов.
  • Используйте инкрементные бэкапы или сжатие архивов для экономии места.
  • Для больших магазинов рассмотрите хранение копий на удалённых сервисах (S3, Google Drive) с аналогичной автоматизацией очистки.

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

МетодПлюсыМинусыКому подходит
WP-CLI скрипт + cronГибкость, нет лишних плагинов, полный контрольТребует базовых навыков работы с терминалом и WP-CLIРазработчикам и администраторам с доступом к серверу
Плагины для управления бэкапамиПростой интерфейс, дополнительные функцииИногда нагружают сайт, могут конфликтовать с другими плагинамиПользователям без опыта работы с терминалом
Скрипты на PHP с запуском через WP-CronАвтоматизация без доступа к серверуWP-Cron зависит от посещаемости сайта, менее надеженМалые сайты с низкой нагрузкой
×
-15%
на премиум плагин
Clearfy

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

Включить Clearfy »