Организация надежного резервного копирования — одна из важнейших задач при администрировании баз данных СУБД PostgreSQL и сред 1С:Предприятие. Часто возникает необходимость настроить автоматическую передачу файлов бэкапов с удаленного сервера на локальный компьютер администратора. Это гарантирует сохранность данных даже в случае физического выхода из строя дискового массива на основном сервере. При обслуживании сред 1С:Предприятие этот процесс можно автоматизировать с помощью инструмента для архивирования и тестирования баз, работающего по расписанию в тихом режиме.
В этой статье мы подробно разберем, почему при попытке опубликовать папку на веб-сервере Apache 2.4 возникают критические ошибки (такие как остановка службы или ошибка 404 Not Found), как правильно настроить конфигурационный файл httpd.conf, а также рассмотрим более надежные и современные альтернативные методы автоматизации передачи резервных копий.
При попытке опубликовать папку для общего доступа через Apache администраторы часто копируют готовые инструкции из интернета, не обращая внимания на версию веб-сервера. Это главная причина возникновения проблем. Рассмотрим подробнее две основные ошибки:
Order allow,deny и Allow from all. В версии Apache 2.4 этот синтаксис был полностью изменен. Если вы добавите эти строки в конфигурационный файл современного Apache 2.4, служба веб-сервера просто откажется запускаться, выдавая синтаксическую ошибку в логах.<Directory>, но не зададите виртуальный URL-адрес, веб-сервер не поймет, по какому адресу обращаться к этой папке. Именно поэтому при переходе по ссылке localhost/ftpserver браузер возвращает ошибку 404 Not Found.Для корректной работы в Apache 2.4 управление доступом осуществляется с помощью модуля mod_authz_core и новой директивы Require. Давайте разберем по шагам, как правильно составить конфигурационный файл веб-сервера.
Чтобы опубликовать локальную папку с бэкапами (например, расположенную по пути C:/Backups/PostgreSQL) на веб-сервере Apache 2.4, нам потребуется отредактировать конфигурационный файл httpd.conf.
Давайте откроем текстовым редактором файл httpd.conf (он обычно находится в папке Apache24/conf/) и добавим в самый конец следующий блок настроек:
Alias /ftpserver "C:/Backups/PostgreSQL"
<Directory "C:/Backups/PostgreSQL">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Давайте подробно проанализируем каждую строчку этой настройки, чтобы понимать, как она влияет на безопасность и доступность файлов:
/ftpserver) с реальным физическим каталогом на жестком диске сервера. Обратите внимание, что в путях Windows внутри конфигурации Apache необходимо использовать прямые слэши (/) вместо обратных.Indexes разрешает веб-серверу автоматически формировать список файлов и папок (индексную страницу) в виде HTML-страницы, если в каталоге отсутствует файл index.html. Без этой директивы при переходе по адресу вы получите ошибку 403 Forbidden..htaccess в этой папке, что повышает безопасность системы.Allow from all. Он открывает доступ к папке для всех пользователей без авторизации.Важное предупреждение о регистре символов: Помните, что веб-сервер Apache чувствителен к регистру символов в URL. Если вы прописали в конфигурационном файле Alias /ftpserver, то обращение к ресурсу как localhost/FTPSERVER или localhost/FtpServer гарантированно приведет к ошибке 404 Not Found. Всегда пишите адрес в браузере точно так же, как он указан в директиве Alias.
После сохранения изменений в файле httpd.conf обязательно перезапустите службу Apache. Если служба успешно запустилась, откройте браузер и перейдите по адресу http://IP_адрес_сервера/ftpserver. Вы должны увидеть список файлов резервных копий, доступных для скачивания. Для автоматического развертывания веб-сервера и управления службой можно использовать PowerShell-скрипт установки Apache HTTP Server на Windows.
Хотя публикация папки через HTTP/HTTPS на веб-сервере Apache решает задачу доступности файлов, этот метод имеет ряд существенных недостатков при организации регулярного автоматического резервного копирования:
Require all granted) делает ваши резервные копии баз данных доступными для любого пользователя в сети, который узнает IP-адрес сервера. Настройка же базовой авторизации через файлы .htpasswd потребует дополнительных усилий.Посмотрим на более надежные альтернативные методы организации регулярной передачи бэкапов.
Вместо того чтобы поднимать веб-сервер Apache на удаленном компьютере, мы можем настроить передачу файлов по безопасному протоколу SFTP. Это активный метод передачи (push), когда удаленный сервер сам отправляет файлы на ваш домашний компьютер по расписанию.
Разберем по шагам, как это реализовать:
winscp_script.txt, со следующим содержимым:
option batch abort
option confirm off
open sftp://backup_user:password@home_pc_ip:port/ -hostkey="ssh-ed25519 ..."
put C:\Backups\PostgreSQL\*.* /home/backups/
exit
Затем создайте простой исполняемый пакетный файл upload.bat, который будет запускать этот сценарий:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script="C:\Scripts\winscp_script.txt" /log="C:\Scripts\winscp.log"
Добавьте запуск файла upload.bat в стандартный Планировщик задач Windows (Task Scheduler) на удаленном сервере на удобное ночное время. Данный способ гарантирует надежное шифрование трафика и автоматическое возобновление передачи при обрыве связи.
Если вы хотите избежать установки сторонних серверов на своем домашнем ПК, отличным решением будет объединение удаленного сервера СУБД и вашего локального компьютера в одну защищенную виртуальную сеть (VPN). Для этого можно использовать современные технологии, такие как WireGuard, OpenVPN или ZeroTier.
После того как устройства окажутся в одной локальной подсети, домашний ПК станет доступен по внутреннему IP-адресу (например, 10.8.0.2). Теперь мы можем выполнить передачу файлов стандартными средствами Windows:
robocopy "C:\Backups\PostgreSQL" "\\10.8.0.2\BackupShare" /E /COPY:DAT /XO /R:5 /W:15 /LOG:"C:\Scripts\robocopy.log"
Рассмотрим подробнее ключи утилиты Robocopy, которые мы использовали:
Если администрирование через конфигурационные файлы и bat-скрипты кажется вам слишком сложным и трудоемким процессом, отличным выбором станет использование специализированного программного обеспечения. Для резервного копирования систем 1С и СУБД PostgreSQL существует отличное отечественное решение — Effector Saver (доступна полнофункциональная бесплатная редакция).
Проанализируем возможности, которые предоставляет эта утилита:
pg_dump.zip или 7z и позволяет установить на архив надежный пароль.При настройке регламентного копирования баз данных критически важно разделять методы создания бэкапов, так как они по-разному влияют на работу пользователей:
1. Резервное копирование средствами PostgreSQL (утилита pg_dump). Этот метод является предпочтительным и наиболее надежным. Утилита pg_dump создает транзакционно-согласованную копию базы данных в реальном времени. При этом нет необходимости отключать сеансы пользователей и регламентные задания в 1С. Работа предприятия не останавливается, хотя во время бэкапа может незначительно снизиться общая производительность дисковой подсистемы сервера.
2. Резервное копирование средствами 1С (выгрузка информационной базы в файл .dt). Данный метод требует обязательного монопольного доступа к базе данных. Чтобы запустить выгрузку, вам придется программно отключить всех активных пользователей и приостановить выполнение всех регламентных заданий на сервере 1С. Если этого не сделать, попытка выгрузки файла завершится аварийной ошибкой. Для обхода этого ограничения можно применить скрипты выгрузки базы в dt без закрытия сессий пользователей.
Именно поэтому для регулярного автоматического создания бэкапов рекомендуется использовать средства СУБД (PostgreSQL), а веб-сервер Apache или специализированные утилиты типа Effector Saver применять исключительно для последующей безопасной транспортировки готовых файлов на локальные хранилища.