Бэкапер файловых баз с хранением на яндекс-диске

Администрирование - Архивирование (backup)

Резервное копирование файловых баз

6
Еще один бекапер файловых баз на инфостарте. Возможно будет интересен франчам, у кого много небольших клиентов с файловыми базами. У себя используем больше года. Состоит из 3-х частей: 1 - размещается на компьютере клиента; 2 - настраивается яндекс-диск; 3 - у себя на рабочем компьютере. Настроенная система организует архивацию файловых баз данных на компьютере клиента, копирование их на яндекс-диск, сбор и анализ информации о наличии архивов на яндекс-дисках с возможностью закачки к себе на рабочий компьютер.

Настройка следующая:

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

2. Закачиваем клиенту файлы бекапера

- backuper.bat - сам скомпилированный бекапер

- oauth_token.txt  - в него записываем полученный токен

- param.txt - в нем прописываем какие базы копируем, куда складываем, какое количество храним

- setup.vbs - файл запуска бекапера, в нем указываем абсолютный путь к файлу параметров param.txt и самому бекаперу backuper.bat

3. Настраиваем планировщик, я делаю ежедневный запуск, файл запуска - setup.vbs.

4. Развернуть у себя на компьютере конфигурацию, или объединить ее с той что используете у себя. В справочнике Контрагенты в поле Токен для каждого клиента указывается свой токен, полученный в его ящике.

1,2,3 пункт делаю так для каждого клиента.

Настройка закончена.

После того как планировщик у клиентов отработает, архивы баз появятся на яндекс-дисках. Сама программа работает в фоне, клиент ее не видит. Из базы выходить не нужно. Ежедневно при первом запуска конфигурации она проверяет данные на яндекс-дисках и записывает эту информацию в документ Облако, проводит его с записью в регистр. После этого можно смотреть отчеты, и принимать соответствующие меры. Можно закачать базу себе с помощью встроенной обработки.

Образец заполнения параметров файла param.txt:
<Забекапить>                   - по этой строке программа начинает искать настройки для следующей базы
D:\1cworkbases\БП           - путь до базы, которую нужно заархивировать
D:\Архив\БП                      - путь до архива, куда будут сложены архивы
Приложения/Архив/БП    - путь к папке на яндекс-диске, куда будут отправлены архивы
5                                         - количество архивов, которое будет хранится в папке ЕжедневныеАрхивы и ЯндексДиске. При записи новых архивов старые удаляются.

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

На компьютере клиента для каждой базы создается 2 папки - ЕжедневныеАрхивы и ЕженедельныеАрхивы. Каждый понедельник в папку ЕженедельныеАрхивы складывается новый архив. В папке ЕжедневныеАрхивы и на яндекс-диске хранится только указанное количество архивов, более старые удаляются.

Скрипт написан на 1script, поэтому требуется .NET 4.5.2, исходник тоже выкладываю. Мой скомпилированный файл архивы не паролит, советую указать его в скрипте и скомпилировать самостоятельно. 

Возможно потребуется также настройка антивируса, тк им такая активность не нравится.

Вот такой велосипед, говорят настройка сложная, но, думаю, разобраться можно. У себя используем больше года, данные не теряем, всегда под рукой свежая копия, которую можно скачать и поработать с ней не отвлекая клиента. Может кому то еще пригодится, а может посоветуют как доработать.

6

Скачать файлы

Наименование Файл Версия Размер
Бэкапер файловых баз с хранением на яндекс-диске
.rar 743,51Kb
04.06.18
1
.rar 743,51Kb 1 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. V.Nikonov 119 08.06.18 08:48 Сейчас в теме
А выложить отдельный функционал заменяющий функции (FTP.Прочитать(), FTP.Записать(); FTP.Dir()) не сложно?
Вероятно нужен вариант, что Токен скармилвается при Вызове как Параметр, и вариант использующий стандартизированный Токен для Базы...
2. yabrus 7 09.06.18 07:30 Сейчас в теме
(1) вот кусок кода, если поможет:
		
Соединение = Новый HTTPСоединение("cloud-api.yandex.net",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
		//Запрос по корневой папке
	    Запрос = Новый HTTPЗапрос("/v1/disk", ПолучитьЗаголовки(Контрагент));
	    Ответ = Соединение.Получить(Запрос);
		СвободноеМестоВОблаке = ПолучитьДанныеОбОставшемсяМесте(Ответ,Контрагент);

Функция ПолучитьДанныеОбОставшемсяМесте(Ответ,Контрагент)
    Если Ответ.КодСостояния = 200 Тогда
        Данные = ПрочитатьДжейсон(Ответ);
		Возврат Данные.total_space - Данные.used_space - Данные.trash_size;
    Иначе
        Данные = ПрочитатьДжейсон(Ответ);
        Сообщить("Не удалось получить данные об свободном месте в облаке у контрагента " + Контрагент +" "+Данные.message, СтатусСообщения.ОченьВажное);
		Возврат 0;
    КонецЕсли;
КонецФункции

Функция ПолучитьЗаголовки(Контрагент)
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type","application/json; charset=utf-8");
    Заголовки.Вставить("Authorization", "OAuth "+СокрЛП(Контрагент.Токен));
	Возврат Заголовки;	
КонецФункции

Функция ПрочитатьДжейсон(Ответ)
    Джейсон = Новый ЧтениеJSON;
    Джейсон.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    Возврат ПрочитатьJSON(Джейсон);
КонецФункции

Показать
V.Nikonov; +1 Ответить
3. V.Nikonov 119 09.06.18 17:02 Сейчас в теме
(2)
Александр Собянин (yabrus) 6 09.06.18 07:30
(1) вот кусок кода, если поможет:

Я имел в виду вариант распространения в виде Отдельного модуля или Обработки, который бы позволил подменить типовую работу с FTP на обращение к Yandex-Disk.
P.S. Я бы с удовольствием скачал такую "Библиотеку".
4. yabrus 7 03.07.18 09:00 Сейчас в теме
https://infostart.ru/public/853451/ посмотрите тут, кажется то, что вы искали
Оставьте свое сообщение