sancho2804 / yandex_disk
Yandex Disk Sync
Requires
- php: ^7.0
- sancho2804/rest_client: ^1.0.3
This package is auto-updated.
Last update: 2025-06-26 03:37:57 UTC
README
На работе была дана задача: синхронизировать файлы с локального сервера с яндекс диском. После утановки и шаманства со стандартной программой от Яндекс для debian, ничего не вышло. Файлов много - около 700.000. Яндекс не мог стартовать, чтобы начать синхронизацию. Было принято решение написать скрипт на PHP, который мог бы выполнить поставленную задачу. Скрипт написан и выполнил задачу. Для этого я его поставил в CRON с периодом в час. Если у вас возникли подобные проблемы, то предлагаю использовать мое решение.
Установка:
Устанавливаем через composer:
composer require sancho2804/yandex_disk
Подключаем библиотеку и создаем объект класса:
include_once 'vendor/autoload.php'; use sancho2804\yandex_disk; //Используем namespace. $yandex_disk=new yandex_disk\init($token[,'/files/www/yandex_disk']);
Аргументы
- Токен от Яндекс OAuth.
- Абсолютный путь до папки, которую необходимо закачать.
Доступные свойства:
string yandex_disk::error
Содержит последнее сообщение об ошибке. Доступно только на чтение.
string yandex_disk::start_path
Содержит начальную директорию сканирования.
Доступные методы:
yandex_disk::get_space(string $unit='gb'):array
Возвращает использованное, свободное и сколько всего места на диске.
Аргументы:
- string $unit - единицы измерения возвращаемых значений (b,kb,mb,gb,tb).
Возвращаемые значения:
$result=[ 'total', //сколько всего места на диске. 'used', //использовано места. 'free', //свободно места. 'trash' //занято корзиной. ];
Пример:
$result=$yandex_disk->get_space('gb'); var_dump($result);
yandex_disk::add_skip_dirs(array $dirs):bool
Добавляет папки в список игнорируемых. Пути передаются в массиве относительно от начальной директории сканирования. В этом примере /files/www/yandex_disk/ + передаваемая папка.
Аргументы:
- array $dirs - массив относительных путей.
Возвращаемые значения:
$result=true; //Если передаваемый массив добавлен. $result=false; //Если массив пустой, или добавляемые папки уже есть в игнорируемых.
Пример:
$result=$yandex_disk->add_skip_dirs(['.vscode','vendor']); var_dump($result); //будут игнорироваться при сканировании. //files/www/yandex_disk/.vscode //files/www/yandex_disk/vendor
yandex_disk::add_skip_dirs_by_name(array $names):bool
Добавляет имена папок в список игнорируемых. Если такая папка встретится где либо в сканируемой директории, она будет пропущена.
Аргументы:
- array $names - массив имен папок.
Возвращаемые значения:
$result=true; //Если передаваемый массив добавлен. $result=false; //Если массив пустой, или добавляемые папки уже есть в игнорируемых.
Пример:
$result=$yandex_disk->add_skip_dirs_by_name(['.git']); var_dump($result); //будут игнорироваться при сканировании. //files/www/yandex_disk/.git //files/www/yandex_disk/.../.../.git
yandex_disk::add_skip_files(array $files):bool
Добавляет файлы в список игнорируемых. Пути передаются в массиве относительно от начальной директории сканирования. В этом примере /files/www/yandex_disk/ + передаваемый файл.
Аргументы:
- array $files - массив путей до файлов.
Возвращаемые значения:
$result=true; //Если передаваемый массив добавлен. $result=false; //Если массив пустой, или добавляемые файлы уже есть в игнорируемых.
Пример:
$result=$yandex_disk->add_skip_files(['.gitignore']); var_dump($result); //будет игнорироваться при сканировании. //files/www/yandex_disk/.gitignore
yandex_disk::add_skip_files_by_name(array $names):bool
Добавляет имена файлов в список игнорируемых. Если такой файл встретится где либо в сканируемой директории, он будет пропущен.
Аргументы:
- array $names - массив имен файлов.
Возвращаемые значения:
$result=true; //Если передаваемый массив добавлен. $result=false; //Если массив пустой, или добавляемые файлы уже есть в игнорируемых.
Пример:
$result=$yandex_disk->add_skip_files_by_name(['.ds_store']); var_dump($result); //будет игнорироваться при сканировании. //files/www/yandex_disk/.ds_store //files/www/yandex_disk/.../.../.ds_store
yandex_disk::sync(string $path=null, string $start_path_on_disk='/'):mixed
Закачивает папку от начальной директории сканирования на яндекс диск, если передан первый аргумент. Если он пропущен, то закачивается вся папка начальной директории сканирования, учитывая различные виды игнорирования.
Аргументы:
- string $path - относительный путь до папки от начальной директории сканирования.
- string $start_path_on_disk - полный путь на яднекс диске, куда будет все закачиваться.
Возвращаемые значения:
$result=[ 'files'=>int, //Общее количество найденных файлов. 'need_update'=>int, //Количество файлов требующих обновления. 'updated'=>int //Количество файлов, которые успешно обновлены. ]; $result=false; //Если найденные файлы не нуждаются в обновлении.
Пример:
$result=$yandex_disk->sync('/upload','/test'); var_dump($result);
Информация о файлах сохраняется в !yd_sync.json рядом со скриптом