Cоздание архива 1с битрикс на яндекс диске


Знать все - это не знать ничего, однако в деле сайто-строения и поддержки интернет-проектов на основе 1С Битрикс я знаю достаточно много, обращайтесь и я постараюсь Вам помочь.
Cоздание архива 1с битрикс на яндекс диске
Задать вопрос
Постараюсь ответить на любой интересующий Вас вопрос по моим услугам

В прошлой статье я показал, как делать настройку приложения для работы с Яндекс.API и сейчас покажу как создать папку на Яндекс.Диске и перенести наш архив с бэкапом 1С Битрикс в облако.


Для чего может понадобится перенос бэкапов на Яндекс.Диск?

Можно пользоваться архивами непосредственно на сайте, однако что если хостинг не позволяет складировать большой объем файлов, ведь средний объем хостинга - 20 Гб, которого может не хватить при постоянных наработках. Иными словами для чего эта возня. 

1С Битрикс при валидной и активной лицензии предоставляет место под файлы на своем хостинге, но у моего клиента к примеру этого места хватает только на 3 архива, хостинг так же позволяет держать 4 архива, но в процессе разработки клиент захотел, чтобы резервные копии создавались каждую неделю и хранились год. 
Простой вариант - приобретение внешнего жесткого диска и ручное скачивание файлов без всяких гарантий, как показала практика даже при перекачке архива с хостинга на компьютер заказчика на выходе я получал 3 битый архива из пяти. Как это получалось у клиента - вопрос...

Схема работы  по созданию бэкапов 1С Битрикс на Яндекс.Диск


1. Создание новой папки на Яндекс.Диске 
Так как название папки с бэкапом должно быть простым и понятным я решил называть их по дате. т.е. названия папки получились такими 04_07_2019 название генерируется функцией php.

$newdir = date("d_m_Y");

2. Получение списка файлов на хостинге (список файлов бэкапа)
Так же используется стандартная функция php 

  $file = readdir($handle), где в переменной handle находится указание на каталог, в котором лежит архив 

У меня он выглядит так : /home/s/client/live/public_html/bitrix/backup

3. Передача нужных файлов хостинга в облако Яндекс.Диска

<?
$token = 'token';  
$dir = "/home/s/client/live/public_html/bitrix/backup";   // системный путь к папке с бэкапом
$newdir = date("d_m_Y");
$path = $newdir;

$ch = curl_init('https://cloud-api.yandex.net/v1/disk/resources/?path=' . urlencode($path));
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);
$path = $path.'/';  // добавляем обратный слэш иначе все файлы будут копироваться в яндекс.Диске в корне

if($handle = opendir($dir)){

        while(false !== ($file = readdir($handle))) {
            if($file != "." && $file != ".."){
          
// начало загрузки

// Запрашиваем URL для загрузки.
$ch = curl_init('https://cloud-api.yandex.net/v1/disk/resources/upload?path=' . urlencode($path . basename($file)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);
if (empty($res['error'])) {
    // Если ошибки нет, то отправляем файл на полученный URL.
    $fp = fopen($file, 'r');

     $ch = curl_init($res['href']);
    curl_setopt($ch, CURLOPT_PUT, true);
    curl_setopt($ch, CURLOPT_UPLOAD, true);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($http_code == 201) {
        echo 'Файл ' . $file .'успешно загружен.<br>';  // печатаем в браузере какой файл загружен на Яндекс.Диск
    }
}
// конец загрузки
        }
    }
}
?> 


Готовый пример для создания архивов Битрикс на Яндекс.Диске

Данный пример был написан на коленке и по хорошему его нужно оптимизировать, однако со своей задачей он вполне справляется и позволяет переносить бэкап Битриса в папки Яндекс.Диска 
Скачать готовый пример вы можете по ссылке ниже
Заказать услугу
Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

Документы

cloud Размер: 2.2 Кб