Синхронизация файлов через WinSCP
В комплекте полной версии Albireo CMS есть файл sync.php с помощью которого можно быстро синхронизировать файлы между удаленным и локальным серверами.
Программа WinSCP
WinSCP — программа для работы с FTP (+ sFTP). Это многофункциональная программа, которая часто используется именно как FTP-клиент.
Нативная синхронизация WinSCP
У WinSCP есть режим синхронизации файлов, например по времени изменения.
Например у вас есть локальная копия сайтов на albireo.loc и есть ваш сайт, где вы также можете создавать новые страницы, загружать изображения и т.п. В какой-то момент вам нужно синхронизировать эти два сайта между собой. С помощью WinSCP это делается достаточно просто: нужно выбрать два каталога и нажать кнопку «Синхронизация».
В этом режиме WinSCP по FTP просканирует каталоги и по заданным критериям (например время модификации файлов) выдаст таблицу расхождений. Дальше нужно выполнить синхронизацию вручную или автоматом (на выбор).
ВАЖНО! При работе через FTP всегда отмечайте опцию «Сохранить время модификации файла»!
Синхронизация через Albireo CMS
Albireo CMS позволяет выполнять синхронизацию, используя программу WinSCP.
Система в своём составе уже содержит все необходимые php-скрипты, поэтому пользователю полной версии Albireo CMS нет необходимости что-то ещё загружать на сервер.
Общий алгоритм таков:
- Вначале нужно создать файл конфигурации на сайте, где указываются секретный ключ доступа и каталоги сканирования. Это нужно сделать только один раз.
- После этого необходимо взять
sync.php, который уже в комплекте системы — здесь указываются параметры синхронизации, а также название ftp-подключения. Это также следует сделать только один раз. - Запускается скрипт:
php sync.php, который самостоятельно проверит и сравнит файлы и каталоги сервера и локальной копии. - Если будут конфликты синхронизации, то скрипт выдаст сообщение, где нужно будет выбрать вариант действия.
- После этого появится файл
_run-sync.bat, который будет содержать все инструкции для WinSCP. - Запускается файл
_run-sync.bat, который запустит WinSCP: вам нужно будет ввести мастер-пароль и после этого программа загрузит все нужные файлы.
Преимущество использования именно такого подхода в том, что достаточно один раз настроить параметры синхронизации и после этого сам процесс будет занимать несколько секунд. В отличие от нативной синхронизации WinSCP, которая может выполняться очень долго (до десятков минут), здесь список отличий формируется через Albireo CMS за доли секунды.
Кроме того, синхронизация через Albireo CMS позволяет разрешать конфликты. Например если есть локальный файл, но его нет на сервере, то программа уточнит нужно ли загрузить его на сервер или нужно удалить локальный файл.
В старой версии Albireo CMS (до 2026.07) использовался другой скрипт winscp-sync.php. Больше он не поддерживается и его нужно просто удалить.
Конфигурация на сервере
Первым действием следует создать конфиг файл. Для этого создайте файл website/config/sync.php
<?php if (!defined('BASE_DIR')) exit('No direct script access allowed');
/**
* (c) Albireo CMS, https://maxsite.org/albireo, 2020-2026
*/
// Это файл website/config/sync.php
return [
// ключ доступа
'key' => 'secret12345',
// каталоги для сканирования, относительно корня сайта
'dirs' => ['templates', 'website'],
];
# end of file
Ключ доступа используется в URL, поэтому лучше если он не будет содержать служебные символы.
После загрузите файл на сервер и наберите в браузере адрес: https://ВАШ-САЙТ/admin/sync/ВАШ-КЛЮЧ.
Если вы всё сделали правильно, то вы увидите список пустых каталогов и список файлов вашего сайта в формате JSON (браузер его показывает как таблицу).
Если же возникла ошибка, то вы увидите Error.
Каталоги для сканирования следует указывать только те, которые действительно меняются.
Не нужно указывать каталог system, поскольку он разный для локального и удалённого сервера. К тому же, согласно лицензии, вы не имеете права его редактировать, поэтому там просто нечего синхронизировать.
Если вы видите список файлов, то значит на сервере всё работает как нужно. Эта настройка выполняется только один раз.
Настройка синхронизации локально
В комплекте Albireo CMS есть файл sync.php.txt, который нужно переименовать как sync.php. Обратите внимание, что этот файл нужен только на локальном сервере, его не нужно загружать на удалённый хостинг!
Файл sync.php (не путайте с config-файлом!) лучше разместить в корне сайта.
Если у вас мультисайт, то вы можете указать подкаталоги для каждого подсайта и обновлять все сайты одним движением.
Исходный sync.php содержит настройки синхронизации примерно такого вида:
#******************************************************************************#
# START EDIT #
#******************************************************************************#
// URL to get list of files: https://you-site/admin/sync/YOU-KEY (see website/config/sync.php)
$remote_url = 'https://SITE/admin/sync/KEY';
// base local directory (full format!)
$base_dir_local = 'c:/domains/SITE';
// PHP-file for synchronization in Albireo CMS (full format!)
$albireo_sync_file = 'c:/domains/SITE/system/admin/_sync_winscp.php';
// final bat file (full format!)
$winscp_bat = 'c:/domains/SITE/_run-sync.bat';
// path to WinSCP.com (full format!)
$winscp_exe = 'c:/Programs/WinSCP/WinSCP.com';
// WinSCP name connect or ftp://USER@PASSWORD
$winscp_connect = 'myftp';
// FTP directory
$ftp_dir = '/domains/SITE/public_html';
// directory to scan
$scan_dirs = [
'website',
'templates'
];
// ignored file extensions without dots
$ignore_ext = [
'sqlite',
];
// ignored file names
$ignore_files = [
'.htaccess',
'base-constants.php',
'robots.txt',
];
// ignored files with path
$ignore_files_full = [
'website/pages/_s_a_m_p_l_e.php',
];
// ignored paths - the path is specified without a trailing slash
$ignore_path = [
'website/service/backup',
'website/service/storage',
'website/service/cache',
];
#******************************************************************************#
# STOP! DO NOT EDIT! #
#******************************************************************************#
$remote_url — это адрес, по которому получается список файлов сервера хостинга. Вы его проверяли на предыдущем шаге.
$base_dir_local — каталог вашего локального сайта. Лучше указывать в полном формате. Хотя вы работает под Windows, где разделитель \, используйте прямой слэш /. Это избавит от проблем экранирования символов.
$albireo_sync_file — полный путь к php-скрипту Albireo CMS. В этом файле размещён код синхронизации. Он является частью системы, поэтому его не следует менять.
$winscp_bat — это имя итогового bat-файла, который будет содержать инструкции для WinSCP. Он появится автоматически, если будет что синхронизировать. Если синхронизация не нужна, файл будет автоматически удалён.
$winscp_exe — полный путь к WinSCP.com. Обратите внимание, что программа содержит два исполняемых файла: WinSCP.com и WinSCP.exe. Теоретически вы можете использовать любой, но WinSCP.com сделан специально для консоли, поэтому лучше выбрать его.
$winscp_connect — название ftp-соединения в WinSCP. Формально вы можете указать логин и пароль, но в целях безопасности лучше этого не делать.
$ftp_dir — каталог сайта на удалённом сервере. Обратите внимание, что путь указывается полный - так как это настроено на вашем хостинге. В конце пути не следует указывать слэш.
$scan_dirs — каталоги для сканирования. Они должны совпадать с config-файлом, иначе синхронизация не сможет корректно работать.
$ignore_ext — расширения файлов, которые следует игнорировать. Обычно *.sqlite не требуют синхронизации, поскольку могут различаться и тем самым можно случайно затереть файлы на удалённом сервере, что приведёт к потере реальных данных (например комментарии, логи, голосования и т.п.).
$ignore_files — имена файлов, которые следует игнорировать, независимо от своего расположения.
$ignore_files_full — это файлы, которые указываются с путем, поэтому можно игнорировать их точечно.
$ignore_path — это каталоги, которые следует исключить из синхронизации. Если у вас есть локальные рабочие каталоги, которые не нужно загружать, то укажите их здесь.
Локальный sync.php достаточно настроить один раз.
Запуск локального sync.php
Для запуска используйте команду php sync.php.
Если Windows выдаёт ошибку, что командаphpне найдена, то настройте переменнуюPATH.
Если всё правильно, то появится консоль примерно такого вида:

Дальнейших ход будет зависеть от нескольких условий.
- Если файлов для синхронизации нет, то скрипт просто завершит работу. При этом bat-файл, если есть, будет удалён.
- Если синхронизация нужна, но система сама разрешила все конфликты. В этом случае скрипт создаст bat-файл и молча завершит работу.
- Если при синхронизации возникли конфликты, то скрипт будет выдавать сообщения с просьбой выбрать действие.
Конфликты могут быть для разных случаев, например есть локальный каталог, но его нет на хостинге. В этом случае скрипт попросит выбрать действие:
The catalog is only available LOCALLY: website/mytest [1] Create a directory on the server (mkdir) [2] Delete local directory (rmdir) [3] Skip action Select action (default [3]):
Вам нужно выбрать действие, просто указав его число.
После работы скрипта появится bat-файл _run-sync.bat.
Обратите внимание, что запуск sync.php не выполняет никаких реальных действий. Его задача проанализировать файлы и создать корректный bat-файл с нужными командами для WinSCP или командами Windows.
Запуск _run-sync.bat
Всю реальную работу по синхронизации выполняет файл _run-sync.bat. Он состоит из специальных ftp-команд WinSCP и/или windows-команд (удаление/создание локального файла/каталога).
Перед тем, как его запускать, вы можете его посмотреть любым текстовым редактором (например Блокнот, Notepad++ и т.п.), что именно будет выполняться.
После запуска _run-sync.batоткроется консоль WinSCP, где нужно будет ввести свой мастер-пароль (он не отображается, поэтому вводить нужно вслепую) и после этого программа выполнит все ftp-команды.
После отработки (там будет виден ход работ), консоль закроется.
Если вы пользуетесь Total Commander, то можете запустить консольный файл с нажатой клавишей Enter — это укажет Windows не закрывать консоль после выполнения. Так вы увидите что именно было сделано.
Настройка WinSCP
WinSCP — большая и мощная программа, которая имеет хорошую репутацию и давно используется для создания автоматических скриптов при работе с FTP.
Для того, чтобы воспользоваться синхронизацией через Albireo CMS, вам потребуется вначале настроить ftp-соединение в WinSCP, а уже потом указать его в скрипте синхронизации. Без этого синхронизация работать не будет.
Albireo CMS не имеет возможности работы через FTP, именно поэтому используется сторонняя программа для непосредственной работы с FTP. Это безопасное и качественное решение.