UPD 2024-05-22: В Selectel вскрылся недостаток, не рекомендую его использовать.
В прошлой версии не было выработано однозначно хорошего способа архивации на SELECTEL. Если не ограничивать хранилища, то они могли приводить к большим расходам, да и архивация через FTP показала себя не очень надежной, часто сбоила.
Поэтому проведу работу над ошибками и расскажу, как архивировать 1С на SELECTEL в 2024 году.
Надеюсь, эта статья снимет головную боль системных администраторов 1С мелких и средних предприятий, которые никак не могут найти, в каком облаке хранить архивы. Потому что по себе знаю, что сейчас в этой теме боль и страдания.
Почему холодное хранилище и почему SELECTEL?
Холодное хранилище очень дешево для операций хранения и загрузки в него данных. Вот извлечение данных при необходимости стоит дороже, но не существенно.
В целом можно рассчитывать, что в месяц оно будет обходиться в 50-100 рублей при объеме ежедневного бэкапа в 20-50Гб с поддержкой 10-дневных версий.
Но почему бы не взять тогда облако от обычного популярного провайдера?
Дело в том, что по непонятной причине российский облачные провайдеры препятствуют использованию своих продуктов для корпоративного сектора. Причем делают это не явно. Это узнаешь уже постфактум, типовые проблемы:
Синхронизация делается только программами от провайдера. А они не работают как сервисы — если администратор не залогинился на сервере, архивация не работает.
Для облака декларируется поддержка протокола WebDAV, которого можно было бы использовать для автоматической синхронизации. Но на практике этот протокол работает лишь формально — большие файлы не передает и скорость занижена до полной потери работоспособности (файл передается часами и в итоге соединение рвется).
Корзина на облаке не очищается автоматически, но входит в учет занимаемого объема. Поэтому нужно писать и поддерживать скрипт очистки корзины.
Ограничения на трафик, которые нельзя преодолеть даже за деньги. Например: «В течение месяца вы можете загрузить на свой Диск ограниченный объем файлов — не более двух объемов Диска по вашему тарифу».
Поэтому в конечном итоге выбор делается в сторону простого, прозрачного и надежного решения — холодного хранилища данных.
Почему SELECTEL? Я не знаю других холодных хранилищ в России. Есть хранилища непосредственно от Amazon, но туда очень сложный технический и организационный пороги входа, оплата в валюте. Да и рискованно сейчас хранить данные за границей.
В SELECTEL просто создаешь аккаунт и можно пользоваться! Тестового баланса в 2024 году уже не дают, но можно потратить минимум 100 рублей, этого хватит для тестирования хранения данных в течении минимум месяца.
Регистрация в SELECTEL и пополнение баланса
Для регистрации нужен e-mail и телефон. Регистрировать нужно на юридическое лицо, если услуги оплачиваются по безналу, или на физическое, если наличными. После регистрации на SELECTEL при входе запрашивается подтверждение по SMS, авторизация в браузере держится довольно долго.
Я обычно под каждого клиента завожу отдельный профиль в Chrome, чтобы не путаться и не переключаться.
Важно! Теперь нельзя пополнить баланс на тестовую сумму.
После входа создаем пополняем баланс на 100 рублей, обычно использую свои деньги, пополняю по QR, чтобы не дай бог не включилась подписка с карты, хотя не думаю, что там такое подключается. Привычка. Баланс пополняется обычно сразу после оплаты, иногда нужно нажать «Обновить» в браузере.
Настройки хранилища в SELECTEL
После этого заходим в раздел «Объектное хранилище».
Выбираем команду «Создать контейнер»:
Заполняем данные о контейнере:
Заходим в лимиты и устанавливаем лимит контейнера. Для 10 версия базы по 5 Гб в архиве достаточно 50 Гб, но я ставлю 100 Гб:
Важно! К сожалению, теперь версионирование нельзя настроить из личного кабинета, поэтому для упрощения настройки версионирование не используем.
Версионирование будем делать при архивации на сервер — для версий будем использовать папки с номерами дней (0-9) или аналогичные суффиксы файлов.
Добавление сервисного пользователя для архивации
Зайти в раздел: Аккаунт — Профиль и настройки — Управление пользователями — Сервисные пользователи
Добавляем пользователя robot с ролью «Администратор проекта» и выбираем наш единственный проект:
После этого нужно обновить страницу сервисных пользователей и можно увидеть созданного пользователя:
Выдаем по инструкции S3-ключ.
Для этого в списке щелкаем по гиперссылке пользователя robot, и в разделе «S3 ключи» нажимаем «Добавить ключ», выбираем robot и единственный наш проект:
Копируем себе access и secret ключи (ключи показываются только один раз):
Настройка Rclone для архивации на SELECTEL
Rclone пришло на смену морально устаревшему FTP. Использование этой программы описано в документации SELECTEL.
Скачиваем версию под Windows-64 с официального сайта:
Распаковываем в C:\rclone без вложенных папок:
Настройку делать по инструкции, начинаем с запуска rclone из командной строки:
c:\rclone\rclone config
Нюансы:
Имя конфигурации использую backup.
Ищите тип хранилища «Amazon S3 Compliant Storage Provider» и затем тип провайдера «
Any other S3 compatible provider
—other
» в списке, номера могут отличаться от тех, что в документации.region — вводите ru-1
endpoint — вводите s3.ru-1.storage.selcloud.ru
Еще запрашивает, хотите ли вы настроить advanced настройки, ответьте n.
Не забудьте подтвердить настройки командой y.
После настройки можно нажать q для выхода.
Далее нужно протестировать работу синхронизации, выполнив команду:
"C:\rclone\rclone.exe" copy "C:\rclone\rclone.exe" backup:backup
Здесь первое bakcup до двоеточия — имя конфигурации, второе — имя контейнера хранилища на сервере. После можно через \ указать папку в хранилище, если ее нет, она будет создана.
Если команда отработает успешно, зайти в личный кабинет, убедиться, что там находится файл rclone.exe и удалить его:
Использование Rclone для синхронизации данных в скриптах
Для архивации одного файла базы данных 1С в 10 версий использую скрипт:
chcp 1251
set "backup1=C:\Backup\ut11work"
set "backuplast=C:\Backup\ut11work\forcloud"
md "%backuplast%"
rem === ARCHIVING ===
call :base "C:\1C\Bases\trade" "ut"
exit
:base
set arcfile="%backup1%\1cv8_%~2_%date:~1,1%.zip"
set arcfilelast="%backuplast%\1cv8.zip"
set srcfile="%~1\1cv8.1CD"
del %arcfile%
"C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -y %arcfile% %srcfile%
"C:\rclone\rclone.exe" copy %arcfile% backup:backup
rem pause
rem copy %arcfile% %arcfilelast% /Y
rem "C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -v900m -y %arcfilelast% %srcfile%
rem pause
exit /b
Здесь rclone передает созданный архив. Процедура не быстрая, занимает около часа. Но работает довольно стабильно. При этом сеть плотно загружена, возможно в настройках rclone можно выставить, чтобы не так сильно загружала сеть:
Еще один вариант скрипта, который создает архивы для нескольких баз:
chcp 1251
rem Backup path
set "backup1=F:\Archive"
rem Second backup path
set "backup2=D:\shared\Архив\Резерв 1C"
rem Number of day 0-9
set arcnumber=%date:~1,1%
rem === ARCHIVING PROCESS ===
call :base "F:\1C\1С Бухгалтерия 3" "buh3"
call :base "F:\1C\1С Бухгалтерия 2" "buh2"
call :base "F:\1C\1С Бухгалтерия 6" "buh6"
call :base "F:\1C\УНФ" "unf"
call :base "F:\1C\УНФ6" "unf6"
rem === STORE TO CLOUD ===
call :store "unf"
call :store "unf6"
call :store "buh2"
call :store "buh3"
call :store "buh6"
rem timeout 180
exit
:base
set "srcfile=%~1\1cv8.1CD"
set "arcfile=%backup1%\1cv8_%arcnumber%.zip"
set "arcfile2=%backup2%\1cv8_%arcnumber%.zip"
rem Delete old backups
del "%arcfile%" /Q
rem pack files with 7-zip
"C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -y "%arcfile%" "%srcfile%"
rem copy backup to second backup
copy "%arcfile%" "%arcfile2%" /Y
exit /b
:store
rem again build archive path
set "arcfile=%backup1%\1cv8_%~1_%arcnumber%.zip"
rem run rclone
"C:\rclone\rclone.exe" copy %arcfile% backup:backup
exit /b
В первую очередь создаются архивы, копируются на другой диск и потом уже не спеша закидываются в облако.
Архивы локально хранятся по номеру дня (0-9) и аналогично копируются на облако:
Если мало места, при необходимости можно переписать скрипт, чтобы локально хранилась только одна версия файла, а на сервер копировалась в папку под номером дня.
Скрипт архивации нужно прописать задачей в планировщик Windows:
Рекомендую при этом обратить внимание на следующие моменты:
Устанавливайте галочку «Выполнять для всех пользователей», тогда задача отработает даже если администратор не совершил вход в систему.
Устанавливайте галочку «Останавливать задачу выполняемую дольше» и указывайте время 6 часов. По умолчанию там стоит 3 дня. Если скрипт зависнет, то не будет работать 3 дня.
Можно подумать также о дифференциальных архивах, чтобы снизить траффик на архивацию.
Еще можно подумать о схеме извещений, если происходит ошибка архивации. Думаю, можно использовать curl для отправки сообщений в телеграмм по API. Это эффективнее чем email.
Проверки хранения файлов на SELECTEL
Можно для проверки скачать файлы из облака и сравнить их двоично с оригиналами (например с помощью Total commander). Совпадают:
Скачивать файлы можно через личный кабинет из браузера.
Архивация файлов пользователей на SELECTEL
Туда же можно архивировать и рабочие файлы пользователей (Word, Excel), если нет необходимости в их предварительном шифровании. Я обычно создаю внутри хранилища папку data и аналогичным образом синхронизирую каталоги данных с хранилищем. Нужно правильно указать ключи архивации Rclone, чтобы происходила синхронизация (т.е. старые файлы удалялись).
Расходы и баланс
В разделе «Объектное хранилище — Потребление» можно получить аналитику по трафику, количеству запросов и расходам на хранилище: