Оглавление

rsync — это один из самых универсальных и мощных инструментов для синхронизации и передачи файлов, который активно используется в мире DevOps. Он отлично подходит для таких задач, как резервное копирование, миграция данных, автоматизация развёртываний и поддержание синхронных версий веб-сайтов, включая WordPress. В этом руководстве мы рассмотрим, как использовать rsync для синхронизации данных на различных системах и для автоматизации процесса развёртывания локальной разработки WordPress на VPS.

Основные особенности rsync

rsync обладает множеством преимуществ, которые делают его идеальным выбором для синхронизации файлов:

  • Инкрементальная передача файлов — копирует только изменённые данные.
  • Сжатие данных при передаче для экономии трафика.
  • Поддержка SSH для безопасной передачи данных между удалёнными системами.
  • Автоматизация процессов через сценарии и планировщики задач (например, cron).

Установка rsync

На большинстве систем Linux rsync уже установлен. Если его нет, вы можете установить его следующим образом:

Debian/Ubuntu:

sudo apt update && sudo apt install rsync

RHEL/CentOS:

sudo yum install rsync

macOS:

brew install rsync

Примеры использования rsync для синхронизации данных

1. Локальная синхронизация файлов

Чтобы синхронизировать файлы между двумя локальными директориями:

rsync -avh /path/source/ /path/destination/

Параметры:

  • -a — архивный режим, сохраняющий права доступа, владельцев и временные метки.
  • -v — подробный вывод.
  • -h — человекочитаемый формат размера файлов.

2. Синхронизация с удалённым сервером через SSH

Синхронизация файлов с удалённым сервером по SSH:

rsync -avh -e ssh /path/source/ user@remote_server:/path/destination/

Параметры:

  • -e ssh — использование SSH для передачи данных.

3. Резервное копирование с исключениями

Для исключения ненужных файлов (например, временных или кэш-файлов):

rsync -avh --exclude='*.tmp' --exclude='cache/' /path/source/ /path/backup/

4. Синхронизация без удаления файлов

Если нужно синхронизировать файлы в одну сторону без удаления файлов на сервере назначения:

rsync -avh --ignore-existing /path/source/ /path/destination/

5. Использование сжатия данных

Для увеличения скорости передачи данных:

rsync -avzh /path/source/ user@remote_server:/path/destination/

6. Миграция данных между серверами

Для полной миграции данных между двумя серверами:

rsync -avzh --progress -e ssh user@old_server:/path/ /path/destination/

7. Синхронизация файлов между несколькими серверами

Для синхронизации веб-контента между двумя серверами:

rsync -avz --delete /var/www/html/ user@server2:/var/www/html/

8. Автоматизация с помощью cron

Вы можете автоматизировать синхронизацию данных с помощью планировщика задач cron. Пример задачи для ежедневной синхронизации файлов в 2:00:

0 2 * * * rsync -avh -e ssh /data/ user@remote_server:/backup/

Синхронизация локальной разработки WordPress с VPS через rsync

Для разработчиков WordPress rsync может значительно упростить процесс синхронизации локальной версии сайта с сервером на VPS, особенно при развёртывании изменений. rsync позволяет эффективно переносить только изменённые файлы, избегая полного копирования всех данных.

1. Подготовка к синхронизации

  1. SSH-доступ к серверу VPS: Убедитесь, что на VPS настроен SSH-доступ. Для автоматизации процесса синхронизации можно настроить SSH-ключи, чтобы избежать постоянного ввода пароля: ssh-keygen -t rsa ssh-copy-id user@vps_ip
  2. Структура проекта: Определите, какие файлы необходимо синхронизировать. Обычно это файлы темы, плагинов и медиафайлы:
    • Темы и плагины: /wp-content/themes/ и /wp-content/plugins/
    • Медиафайлы: /wp-content/uploads/
    • База данных WordPress

2. Синхронизация файлов темы и плагинов

Для синхронизации файлов темы между локальной машиной и VPS:

rsync -avz --progress --exclude="*.log" --exclude="node_modules/" /path/to/local/wp-content/themes/your-theme/ user@vps_ip:/path/to/vps/wp-content/themes/your-theme/

Параметры:

  • --progress — отображает статус передачи файлов.
  • --exclude — исключает ненужные файлы, такие как логи и папки зависимостей (node_modules).

3. Синхронизация медиафайлов

Для синхронизации медиафайлов, загруженных через WordPress, между локальной средой и сервером VPS:

rsync -avz --progress /path/to/local/wp-content/uploads/ user@vps_ip:/path/to/vps/wp-content/uploads/

4. Синхронизация базы данных

Для передачи базы данных можно использовать wp-cli. Сначала экспортируем базу данных на локальной машине:

wp db export local-db.sql

Затем переносим экспортированный файл на VPS с помощью rsync:

rsync -avz local-db.sql user@vps_ip:/path/to/vps/backups/

После этого импортируем базу данных на VPS:

ssh user@vps_ip
wp db import /path/to/vps/backups/local-db.sql

5. Автоматизация процесса синхронизации

Чтобы автоматизировать процесс синхронизации, можно создать bash-скрипт, который будет синхронизировать файлы и базу данных:

Пример bash-скрипта:

#!/bin/bash

# Синхронизация темы
rsync -avz --progress --exclude="*.log" --exclude="node_modules/" /path/to/local/wp-content/themes/your-theme/ user@vps_ip:/path/to/vps/wp-content/themes/your-theme/

# Синхронизация плагинов
rsync -avz --progress --exclude="*.log" --exclude="node_modules/" /path/to/local/wp-content/plugins/ user@vps_ip:/path/to/vps/wp-content/plugins/

# Синхронизация медиафайлов
rsync -avz --progress /path/to/local/wp-content/uploads/ user@vps_ip:/path/to/vps/wp-content/uploads/

# Экспорт и синхронизация базы данных
wp db export local-db.sql
rsync -avz local-db.sql user@vps_ip:/path/to/vps/backups/

6. Автоматическая синхронизация через cron

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

0 2 * * * /path/to/sync-script.sh

Заключение

rsync — это незаменимый инструмент для DevOps-инженеров и разработчиков WordPress, который помогает автоматизировать процесс синхронизации данных и развёртывания. Он позволяет легко синхронизировать локальные и удалённые файлы, сохранять базы данных в актуальном состоянии и выполнять миграции серверов. Независимо от того, работаете ли вы с WordPress или любыми другими системами, rsync может значительно упростить ваши повседневные задачи по управлению данными.