Загрузка на яндекс диск из командной строки
Позавчера хабраюзер vasiatka в посте №206752 поделился с хабрасообществом, а следовательно и со всем остальным миром, продуманным и весьма развитым классом для работы с Яндекс.Диском. Некоторое время назад я тоже стал использовать этот сервис для хранения там бэкапов. Хочу поделиться значительно более коротким вариантом скрипта на php, который делает архивы базы данных и файлов сайта, и заливает их по WebDAV. Возможно кому-то и он придётся по душе.
Если кто-то хочет сразу взглянуть на полный листинг — он внизу.
Возможные проблемы и их решение
При появлении проблемы подключения важно определить, какую именно ошибку сообщает программа – чтобы делать правильные действия для её устранения.
Захват ссылок Download master
Есть и другое решение проблемы, если описанный выше вариант не устраивает. Download Master в этом случае настраивается в режим перехвата загрузок. Для этого понадобится:
- Запустить программу.
- Перейти в пункт «Настройки» в горизонтальном меню.
- Нажатием плюс раскрыть тему «Общие» и выбрать подпункт «Интеграция».
- Отметить галочками: «Отслеживать URL в буфере обмена», «Интеграция в Microsoft Internet Explorer», «Расширенная интеграция».
- Перезапустить браузер.
Проблемы с большими файлами
Для решения этих проблем можно попробовать изменить параметры клиента, как это описано ниже, подробнее см. в статье You cannot download more than 50 MB or upload large Files when the upload takes longer than 30 minutes using Web Client in Windows 7
Но в действительности получилось закачать файл 300 МБ только командой xcopy с отключением буферизации:
Копирование закончилось успешно, при том что не получилось ни проводником Windows, ни copy /y /z /v.
WebDAV в FAR Manager
Работать с файловым хранилищем по WebDAV можно и без подключения сетевого диска, если использовать плагин NetBox в Far Manager, при этом файлы будут доступны в самом Far Manager, но недоступны в командной строке и в других программах, например, в проводнике Windows.
Подключение файлового сервиса через командную строку Windows
Если вариант установки сетевого диска при помощи проводника Windows не устраивает или работает некорректно, существует второе решение задачи при помощи командной строки (CMD). Для начала понадобится запустить ее. Есть два варианта как это сделать:
- Набрать поисковый запрос «cmd» в меню Пуск, (если установлена Windows Vista, 7 см. Как установить Windows 10 ), после чего windows покажет иконку приложения, которое и необходимо запустить.
- Для Windows 8, 8.1 и 10 запустить приложение «Выполнить», которое предусмотрено во всех версиях ОС от Microsoft, при помощи комбинации клавиш “Win + R” и прописать в открывшемся окне команду «cmd».
На этапе, когда командная строка уже запущенна, понадобится поочередно выполнить несколько действий:
- Подтвердить ввод команды клавишей Enter.
- После в консоли появится предложение ввести имя пользователя, что и потребуется сделать.
- В завершение ввести пароль, не забывая подтвердить ввод.
Теперь в проводнике отобразится сетевой диск. Если в доступе было отказано, необходимо проверить пароль и имя пользователя.
Особое внимание стоит обратить на шаг №4, так как введение секретных символов в cmd не отображается даже в виде звездочек.
Автоматическое подключение сетевого диска
Возможность для автоматического подключения сетевого диска при загрузке компьютера на самом деле уже есть и включается параметром /persistent:yes (см. выше).
Недостаток этого решения состоит в том, что при загрузке компьютера делается только одна попытка подключения диска. Если на этот момент не было сетевого подключения или временно сервер был недоступен, то диск так и останется не подключенным.
Та же проблема возникает, если в автозагрузку вставить только команду подключения:
Подключение WebDAV из командной строки Windows
Также можно использовать возможности командной строки – команда NET USE успешно подключает WebDAV хранилища, например, эта команда подключает папку Яндекс.Диск в виде логического диска Y:
Эта команда для подключения папки Box в виде логического диска X:
Чтобы подключить OneDrive к букве O: (значение cid берётся из адресной строки браузера в веб-итерфейсе OneDrive:
Чтобы подключить OneDrive к назначаемой автоматически букве диска:
Хотя можно выбрать автоматический выбор буквы диска (указанием звёздочки), я предпочитаю использовать фиксированные буквы — это упрощает работу с командными файлами.
Примечание: параметр /persistent:yes необязательный, он задаёт автоматическое восстановление подключения при перезагрузке компьютера, подробнее об этом см. ниже.
После подключения можно пользоваться стандартными командами для работы с файлами, например:
Действия с хранилищем в командном файле
Ошибка 67 — не найдено сетевое имя
Ошибка 67 означает, что не удалось найти сервер по указанному в команде сетевому имени. В английской версии Windows эта ошибка описывается как «The network name cannot be found».
В первую очередь необходимо проверить, правильно ли в команде набран протокол и адрес webdav сервера, например, для Яндекс.Диска должно быть:
Во-вторых, проверить разрешение сетевого имени – сервер должен быть доступен:
Если сервер неизвестен или не отвечает, то явно что-то не так с интернет подключением.
Если сетевое имя сервера указано корректно, сервер успешно пингуется, но подключение с правильными параметрами всегда завершается ошибкой 67, то причиной проблемы является блокировка подключения со стороны локальной сети. Например, у меня на работе происходит именно так, потому что доступ к интернет хранилищам по WebDav заблокирован администраторами намеренно, наверное, чтобы предотвратить слив информации на сторону. Чтобы убедиться, что причина именно в этом, необходимо попробовать подключение с точно такими же параметрами, но из другой сети, лучше из домашней, потому что операторы обычно не блокируют WebDAV коммуникации. Если проверка подтвердила, что локальные админы блокируют подключение, то решить проблему можно только через них.
Поэтому при этой ошибке я проверяю, что пароль введён правильно и находится между адресом сервера и параметром /user .
Также сложность может возникнуть, если пароль содержит спецсимволы, имеющие особое значение в командных cmd/bat файлах, потому что эта часть строки может быть интерпретирована неправильно. Чтобы это проверить, можно попробовать временно указать звёздочку вместо пароля, тогда программа запросит пароль после запуска. Если подключение при вводе пароля по запросу сработает, то надо проверить пароль на наличие недопустимых символов. Например, у меня один из паролей содержал символ амперсанда ‘&’, и это приводило к ошибке 1244. Обойти ошибку удалось, заключив пароль в кавычки. Но если в пароле есть символ кавычек, то это обойти, скорее всего, не удастся – лучше изменить пароль, исключив из него кавычки.
С какими облаками работает этот скрипт
Подключение сетевого диска с проверкой и повтором
Чтобы сделать более надёжное решение, использую cmd/bat файл с проверкой результата и повтором попытки:
В случае ошибки NET USE попытка подключения повторяется через 1 минуту. Задержка делается с помощью ping, подробнее см. Как сделать задержку в командном файле.
Этот командный файл можно запускать вручную или через автозагрузку.
Чтобы не мешало чёрное окно bat файла, можно спрятать его путём запуска через wsh скрипт, см. Скрыть консольное окно.
Приложение, устанавливаемое для Windows, Mac OS X или мобильных платформ потребует постоянного интернет-соединения для синхронизации файлов. При отключенной сети, загрузка новых данных произойдет автоматически после подключения. Влияние работы диска на производительность современных компьютеров почувствовать сложно. На Android и IOS автоматическая синхронизация настраивается пользователем. Вариант работы только при доступном WiFi подключении сэкономит дорогой мобильный трафик.
Собственно всё
Спасибо, что уделили внимание и прочли этот пост. Надеюсь, кому-то моя поделка облегчит жизнь, душевное спокойствие, и даже возможно спасёт в тяжелую минуту. Удачи!
UPD: Спасибо vk2 за правильное замечание, что ваш пароль и логин будет виден на сервере в списке процессов.
UPD: Спасибо kosenka, указал, что обязателен закрывающий слеш в пути WebDAV. Действительно, это же папка. Упустил я, но теперь исправил и в примере, и в скрипте.
Так же подсказал, что если curl ругается на сертификат, ему надо указать ключ -k, что позволит ему подключаться к сайтам без или с неправильным сертификатом.
Еще он справедливо заметил, что zip есть далеко не на каждом хостинге. Постараюсь добавить в ближайшее время строчку для кошерного gzip.
Для работы с клиентом используются следующие команды:
При вводе команды вы можете задать имя файла для хранения токена и путь к нему (FILE). Если дополнительные параметры не будут указаны, для хранения токена будет создан файл passwd в каталоге ~/.config/yandex-disk .
Вводить логин и пароль в клиенте не нужно. После вызова команды Диск предложит вам открыть определенную страницу в браузере и ввести там уникальный код.
start — запустить демон и синхронизировать все папки, кроме указанных в списке исключений exclude-dirs.
status — отобразить статус работы демона (состояние синхронизации, ошибки синхронизации, список синхронизированных файлов, общее и свободное пространство на Диске).
Яндекс диск API
API (Application Programming Interface) – оболочка, используемая для программирования приложений. При помощи этого ПО Яндекса сторонние разработчики встраивают функционал онлайн-хранилища в собственные программы. Комплект распространяется бесплатно на официальном сайте с поддоменом tech.
Помимо совместимости с Windows-приложениями, поддерживаются Mac OS X, мобильные платформы Windows Phone, IOS и Android.Для веб-программистов Yandex представил пакеты, которые при помощи виджетов легко интегрируют хранилище в работу сайта.
Программисты диска, помимо API для удобства разработчиков выпустили и полноценный пакет SDK Yandex, доступный на Java, а также объектно-ориентированных языках программирования C Sharp и Objective-C.
Сетевой диск WebDAV на Linux для доступа к Яндекс диск
Для того чтобы подключить сетевой диск на Linux понадобится выполнить четыре действия:
Производительность wevdav хранилищ
Это очень интересный вопрос для резервного копирования, потому что нам надо понимать, сколько времени будет занимать копирование файла резервной копии на сервер по webdav, ведь размер такого файла может быть и 100МБайт, и 1 ГБайт и больше.
Следующий тест показывает время выгрузки файла 188 МБ на Яндекс Диск по webdav. Подключение к интернету 100 Мбит/с, поэтому на выгрузку существенно не влияет. Для регистрации времени начала и окончания копирования используется программа nhts.
В итоге, файл 188 МБ был скопирован за 38 секунд, то есть скорость выгрузки составила 4,9 МБ/с или 40Мбит/с – хороший результат для резервного копирования. Соответственно, файл 1 ГБ будет загружен на сервер примерно за 3,5 минуты.
Теперь такой же тест для Box (он подключен к X:):
Box работает помедленнее – время копирования того же файла составило 112 секунд, и, соответственно, скорость копирования составила 1,7 МБ/с или 13,4 Мбит/с. При такой скорости время копирования 1ГБ файла составит больше 10 минут. Сам Box пишет, что для business и enterprise аккаунтов есть какая-то оптимизация для повышения скорости копирования на сервер, см. How can I optimize my upload speeds?
Понятно, что скорость копирования может меняться в зависимости от загрузки каналов связи или серверов, но видно, что Яндес Диск быстрее, и с учетом ограничения на размер файла в 250 МБ в Box предпочтительнее для резервного копирования использовать бесплатный Яндекс Диск, чем бесплатный аккаунт Box.
Описание
Скрипт, который я предлагаю вашему вниманию, довольно лаконичный. Если исключить задание параметров и вывод отчета, то останется что-то около тридцати строк. И хотя параметры и их названия говорят сами за себя, я всё же опишу их с комментариями.
Слушайте, и не говорите, что не слышали
Хочу предупредить, что этот скрипт не претендует на надёжный метод бэкапа часто меняющихся сайтов, сайтов с тяжелой базой данных, или иных взрослых и серьёзных веб-проектов. Но для сайтов-визиток — самое то.
Важное замечание: ваш логин и пароль будет виден в списке запущенных процессов во время закачки.Скачивание приватных файлов
Если файл не имеет настроек общего доступа, то ссылка на него доступна лишь владельцу. Для того чтобы найти URL на личный документ:
- Необходимо зайти в аккаунт Яндекс диска через браузер.
- Выделить файл левой кнопкой мыши, после чего в правой колонке появится миниатюра и описание.
- Нажать на иконку загрузки, находящуюся справа от желтой кнопки «Редактировать».
Настроить менеджер закачек:
- на вкладке «Инструменты» – выбрать «Менеджер сайтов»;
Благодаря гибким возможностям подключения к разным системам онлайн-хранилище Яндекс станет удобным приложением для корпораций и пользователей, желающих получить высокую скорость доступа к файлам из любого уголка планеты, а также бесплатное пространство, которого вполне достаточно для личной документации и фотографий.
Еще одно популярное приложение от Яндекса – Яндекс Расписание, благодаря которому пользователь получает последнюю информацию рейсов самолетов, междугородних и пригородных поездов, паромов и автобусовСегодня мы представляем долгожданный клиент Яндекс.Диска для Linux. Можно было бы даже сказать «специально для Хабрахабра», так как ни одно упоминание Диска здесь не обходилось без вопросов о клиенте для Линукса.
У него есть вся основная функциональность, которая есть у клиентов для OS X и Windows, и даже больше (симлинки!), и одна особенность — он консольный.
Ниже читайте о том, как он настраивается, что конкретно умеет, и о том, как именно он устроен и что в нём было непросто сделать.
Установить его можно здесь. Сразу после установки пакета в терминале появится команда yandex-disk, через которую в дальнейшем и идет общение с облаком Яндекса. После этого нужно вручную запустить команду setup.Визард настройки позволяет в режиме диалога выбрать папку для синхронизации, включить автозапуск при старте системы, настроить работу через прокси-сервер (если конечно вы им пользуетесь) и авторизоваться в Яндекс.Диске. При настройке вручную первым делом необходимо авторизоваться. После этого в папке .config, расположенной в домашнем каталоге, будет создан конфиг, в котором можно будет настроить путь к папке синхронизации (можно указать в консоли вручную), прописать путь к файлу токена, указать папки, которые будут или не будут синхронизироваться, и прописать настройки прокси-сервера.
Команды
Подготовительная работа окончена, осталось запустить демон одной из команд. Они позволят вам синхронизировать файлы и папки и пользоваться ими везде, где есть интернет.
- Sync запустит демон, синхронизирует все, находящееся в папке Диска, и остановит демон.
- Start сделает то же самое, но без остановки демона после завершения синхронизации. При использовании start демон остается запущен и все изменения, происходящие в папке Диска, будут синхронизироваться автоматически.
- Введя в терминале stop, можно в любой момент остановить запущенный демон, если он вам мешает.
- Командой status можно узнать, в каком статусе находится ядро синхронизации.
Что умеет
Консольный клиент позволяет поделиться файлом или папкой с помощью команды publish (если файл находится не в папке диска, перед публикацией он будет туда скопирован). Ссылка будет доступна в терминале, и любой человек, пройдя по ней, сможет посмотреть или сохранить себе опубликованный вами файл или папку. Если случайно был опубликован не тот файл, с помощью команды unpublish можно закрыть доступ к публичному объекту.
В Яндекс.Диске возможна выборочная синхронизация. Команда exclude позволит исключить папку из синхронизации: все изменения, производимые в ней после этого, не будут отправлены в облако.
Опция read-only позволит менять файлы локально, без заливки их в облако. При возникновении конфликтов с локальными изменениями, последние будут сохранены в переименованных файлах, а изменения из облака будут синхронизированы. Опция overwrite будет перезаписывать локально измененные файлы в режиме read-only.
Не можем не похвастаться самым интересным нововведением в ядре синхронизации — отныне мы поддерживаем синхронизацию симлинков! Если возникнут трудности и вопросы в использовании консольного клиента команды man и help просто и доступно помогут в них разобраться.
Как сделан
Чтобы в будущем код можно было использовать для реализации клиентов под разные ОС, было принято решение писать его на C++. Специфичные для разных операционных систем куски кода мы вынесли в отдельные функции или классы, а под каждую платформу писали свою реализацию. В качестве основных кроссплатформенных библиотек мы взяли Boost, OpenSSL и JsonCpp, а системой контроля версий стал git. Клиент под Linux собирался с помощью autoconf. Код писался и отлаживался в связке KDevelop + консольный gdb, либо в Qt Creator'е (в зависимости от предпочтений разработчика).
Взаимодействие с облаком и синхронизация производятся с помощью библиотеки ядра Яндекс.Диска, которую используют десктопные клиенты сервиса.
Как работает
Для локализации мы используем библиотеку boost::locale. Текст внутри клиента закодирован в utf-8 и по необходимости преобразовывается в специфичном для каждой операционной системы коде. Мониторинг файловой системы для Linux использует inotify, прекрасно вписыващийся в асинхронную работу boost::asio.
Как устроена синхронизация
Синхронизация — сердце Яндекс.Диска, его ключевая возможность. Задача синхронизации файлового дерева с облаком делится на несколько независимых частей.
1. Мониторинг файловой системы. Ядро синхронизации Яндекс.Диска проектировалось и создавалось как переносимая абстракция, способная выполнять поставленные задачи на всех поддерживаемых платформах. Но такая проблема, как мониторинг файловой системы не реализуется ни стандартной библиотекой C++, ни даже такими монстрами как boost. Более того, даже используя «родное» API операционной системы, мы получаем набор событий, специфический для каждой платформы.
Для мониторинга файловой системы был спроектирован интерфейс «наблюдателя», способного следить за событиями в определённой директории и возвращающего список событий, произошедших в ней. Причём для каждой поддерживаемой платформы набор этих событий отличается. Например, Mac OS X способна сообщить только о факте какого-то изменения в одной из дочерних директорий без детализации. А вот Windows и Linux возвращают полный набор, включая создание, удаление, модификацию и перемещение объектов. Хотя практика показывала, что событиям на платформе Windows доверять не стоит и самым надёжным вариантом остаётся листинг директории после получения оповещения.
2. Индексация локальных файлов и директорий. Для контроля целостности и реализации дельта-обновления файлов ядро синхронизации Яндекс.Диска использует дайджесты — наборы контрольных сумм файла и отдельных его частей. Для всего файла мы рассчитываем стойкий хэш SHA-256 и набор менее стойких сумм для отдельных блоков. Каждый файл, находящийся в папке Яндекс.Диска и не попадающий в список исключений, должен быть проиндексирован. Но вычисление хэша SHA-256 -достаточно дорогая операция, а расчёт хэшей при каждом запуске ПО был бы непростительной тратой ресурсов. Поэтому после того, как завершается индексация файла, ядро синхронизации сохраняет полученный дайджест в «банке» — специальном хранилище, находящемся в служебной директории Яндекс.Диска. Для поиска дайджестов в хранилище используется уникальный идентификатор файла — inode (размер и время последнего изменения). К сожалению, подобный подход не лишён недостатков. Например, многие файлы-криптоконтейнеры сохраняют время последней модификации неизменным даже после записи.
Наверное, кроме тонкостей работы с символическими ссылками, ничего в листинге директорий не представляет особого интереса. Для успешного завершения синхронизации ядро должно обнаруживать и исключать из синхронизации циклические ветки.
Вообще, символические ссылки — это настоящая «головная боль» для ядра синхронизации. Они могут указывать в произвольные места файловой системы, и ни ко всем из них можно применять одинаковые правила синхронизации. Например, пакеты приложений Mac OS X очень часто содержат в себе символические ссылки на директории системных библиотек, и их синхронизация в облако была бы нежелательна — особенно между разными версиями ОС. Но в то же время возможность синхронизировать дополнительные директории с помощью символических ссылок — очень заманчивая возможность, упускать которую не хотелось.
Поэтому для синхронизации символических ссылок была введена особая политика, благодаря которой ядро может выбирать специфический вариант синхронизации для каждой символической ссылки — в зависимости от расположения объекта, на который она указывает.
3. Получение дерева облачной файловой системы. Для решения проблемы синхронизации мало иметь локальную файловую структуру и дайджесты файлов — необходимо получить текущее состояние файловой системы в облаке. Если бы ядру синхронизации каждый раз приходилось обходить дерево с помощью метода PROPFIND, то каждый цикл синхронизации занимал бы неоправданно много времени и создавал бы излишнюю нагрузку на канал. Поэтому ПО Яндекс.Диска использует специальный API, который даёт возможность получать текущее состояние дерева файлов в облаке и изменения, произошедшие в нём, начиная с некоторого известного момента, определяемого версией дерева.
4. Получение оповещений об изменении облачной файловой системы. Синхронизация файлов в реальном времени требует своевременного получения оповещений об изменениях, произошедших с файлами в облаке. Можно было бы использовать периодический опрос сервера клиентами, но, оценив возможное количество клиентов, мы пришли к выводу, что такой подход окажется слабо масштабируемым и приведёт к быстрой перегрузке инфраструктуры сервиса. После недолгих поисков мы остановились на протоколе XMPP. Одна из его реализаций уже долгое время работает в Яндексе. Она была разработана командой, которая позже занимались созданием сервера WebDAV для проекта Яндекс.Диск, поэтому сложностей с интеграцией этого протокола не возникло.
5. Создание списка операций синхронизации. После того как в распоряжении ядра синхронизации оказываются оба дерева файлов — локальное и удалённое — можно приступать к самой процедуре синхронизации. Для этого применяется специальный алгоритм сравнения деревьев, принимающий на вход кроме двух упомянутых деревьев, ещё и третье — последнее синхронизированное. В результате работы алгоритма получается список операций, которые необходимо произвести над локальными и удалёнными файлами и директориям для приведения деревьев к общему виду.
6. Обработка очереди операций синхронизации. Создание списка операций для локального и удалённого деревьев происходит независимо. В результате могут появиться конфликтующие операции. Например, удаление в облаке файла, который был в нём изменён и ещё не синхронизирован локально, или изменение файла одновременно локально и в облаке. Конфликты модификации/удаления всегда разрешаются ядром в пользу модификации, а конфликты двойной модификации разрешаются переименованием одной из версий файла. Таким образом мы можем гарантировать сохранность данных и даём возможность после завершения синхронизации самому пользователю решить, какое из изменений больше ему подходит в каждом конкретном случае.
Операции синхронизации должны подчиняться строгому порядку, нельзя передавать файл, пока не создана его родительская директория. Так же директорию нельзя удалять, пока внутри неё остаются файлы, которые нужно переместить на новое место. Алгоритм сравнения деревьев уже создаёт операции в нужном порядке, но при возникновении ошибок он может нарушиться. Для предотвращения этой ситуации у каждой операции есть список зависимостей — набор операций, которые должны завершиться до начала её выполнения, и набор операций, которые не должны начаться, пока она не будет выполнена.
Кроме зависимостей на порядок выполнения операций оказывает влияние её приоритет. Например, операции передачи файлов выполняются в зависимости от размеров файлов — от маленьких к большим.
Настройка доступа к Яндекс диск через WebDAV
Хранилище Яндекс управляет информацией, находящейся на сервере, при помощи изменения файлов в папке программы на компьютере пользователя. К сожалению, такой вариант может не устроить из-за нежелания или невозможности хранения файлов на HDD (жесткий диск), возникающие по причинам нехватки места или использования несовместимой ОС.
Подключение консольного клиента на Linux
Второй способ для Linux предлагает увеличенную скорость доступа к онлайн-хранилищу и снижает нагрузку на оборудование в сравнении с WebDAV.
Один минус — пакет устанавливается без графического интерфейса. Команды по настройке и работе с файлами выполняются через терминал.
Подробный список команд для работы с клиентом в Linux представлен на странице загрузки приложения. Такой способ подойдет для пользователей, уверенно управляющих терминалом.
Download master и Яндекс диск
Такой несложный процесс, как скачивание файла внешним загрузчиком не вызывает вопросов. Но на практике с хранилищем Yandex проблема присутствует. Изучая страницу загрузки на Яндекс диске, можно столкнуться с дилеммой – ссылки для копирования, которая нужна Download Master, нет. Для того чтобы получить ее понадобиться:
- Начать загрузку в браузере (см. Какой браузер для Windows 10 лучше).
- Перейти на вкладку загрузки.
- Поставить на паузу для экономии трафика или сразу нажать право клавишей мыши на загруженном объекте.
- Выбрать пункт «копировать адрес ссылки».
- Добавить новую загрузку в Download Master, используя скопированную ссылку.
Стоит подметить, что прямая ссылка на файл динамическая (изменяется во времени). По этой причине размещать на сайтах или передавать друзьям такой URL нет смысла.
Копирование файлов по WebDAV
Из-за буферизации на стороне клиента в стандартной COPY или в проводнике возможна потеря данных, поэтому рекомендуется использовать XCOPY с отключением буферизации и с контролем размера.
Настройки
Логин и пароль, и путь на облаке
Локальный путь для создания архивов
Хотя архивацию и заливку на сервис можно сделать одной строкой, в моём скрипте прежде чем загрузить файл, требуется его где-то создать. Путь для создания архивов задаётся в этой переменной.
Можно размещать хранилище локальных копий внутри сайта, а путь добавить в список исключенных из архивирования путей.
Список баз данных
Записывайте в массив $databases те базы, которые вы хотите архивировать. Вероятно стоит создать пользователя в БД без прав изменения и записи для такого использования.
Список сайтов
Стандартный вид одного из членов массива $sites — списка архивируемых сайтов.
Первый параметр — название сайта. Просто строка, которая будет приписываться к имени архива вашего сайта.
Второй — путь к файлам сайта.
Третий — список директорий, которые стоит исключить из архивации. Исключение отдельных файлов я не предусмотрел, но вы можете легко это добавить самостоятельно. Если вы создаёте архивы внутри одного из своих сайтов, то можете исключить это хранилище.
Пример:На этом конфигурация скрипта заканчивается, и он готов трудиться во благо
революции…общества… вебадмина.Таймаут
Исходное значение 1800 секунд или 30 минут, поэтому операции более 30 минут прерываются. Значение таймаута задается в секундах параметром реестра:
В статье рекомендуется значение 3600, т.е. 3600 секунд или один час.
Дополнительные параметры [OPTION]
Указать файл конфигурации. По умолчанию используется файл config.cfg в каталоге ~/.config/yandex-disk .
Указать каталог для хранения локальной копии Диска. Если его название не было задано при выполнении начальной настройки, по умолчанию будет использоваться каталог ~/Yandex.Disk .
--auth=FILE, -a FILE
Указать файл с данными авторизации. По умолчанию используется файл passwd , который создается с помощью команды token или мастера начальной настройки и хранится в каталоге ~/.config/yandex-disk .
Не синхронизировать указанные каталоги. Чтобы настройка действовала всегда, каталоги необходимо добавить в список исключений exclude-dirs в файле config.cfg . Чтобы настройка действовала корректно, названия исключаемых директорий нужно перечислять через запятую, без пробелов.
Запретить изменение файлов на сервере Диска и выполнить синхронизацию только в локальной копии. При возникновении конфликтов синхронизации локальные файлы будут переименованы. Если дополнительно указан параметр --overwrite , локальные файлы будут перезаписаны.
При синхронизации с сервером разрешить перезапись изменений, сделанных в локальной копии Диска. Используется вместе с параметром --read-only .
Запустить демон без возврата управления в консоль. Чтобы вернуть управление, демон необходимо остановить, запустив в другой консоли команду yandex-disk stop или закрыв текущую консоль.
Если используется этот параметр, приложение не читает файл конфигурации. Поэтому все необходимые настройки нужно вводить через командную строку. Так, параметру exclude-dirs соответствует аргумент --exclude-dirs .
Примечание. При использовании --no-daemon не нужно указывать команду start : в этом режиме все команды игнорируются.
Облачные хранилища данных становятся всё более востребованными, как среди частных пользователей, так и среди компаний. При этом некоторые интернет сервисы хранения файлов предоставляют возможность доступа к своему облаку по протоколу WebDAV (Web Distributed Authoring and Versioning).
Преимущества доступа по webdav по сравнению с веб доступом:
- работа с файлами в автоматическом режиме (скачивание/закачивание bat файлами и скриптами JS/VBS/PS), то есть, в первую очередь, это означает возможность автоматического сброса резервных копий на интернет хранилище
- подключение облака как сетевого диска (обычного network drive) с присваиванием буквы логического диска (E:, F: и т.д.), другими словами, возможность работы с облачными файлами из обычных программ (офисные пакеты, графические редакторы и т.п.)
- возможность заливать большие файлы (обычно веб интерфейс позволяет закачивать в хранилище файлы до 2 ГБ). Здесь надо отметить, что бесплатные аккаунты часто ограничены в размере файлов по сравнению с платными, например, на Box бесплатно можно хранить файлы размером не более 250 МБ (на Business аккаунтах размер файла может составлять до 5 ГБ, на Enterprise вроде до 15 ГБ); правда, с большими файлами есть и другие проблемы, но об этом ниже
Статья расскажет о возможностях использования WebDAV в различных программах, особенностях подключения вручную и из командной строки/bat файлов, распространенных проблемах и их решениях.
Как проверить, что хранилище подключено
Проверка того, что подключение установлено, и сервер доступен, может потребоваться в командных файлах. Её можно выполнить командой IF EXIST.
Например, cmd/bat файл для подключения WebDAV проверяет, если диск уже подключен, то сразу выходит:
Или cmd/bat файл резервного копирования проверяет перед выгрузкой, что сетевой диск доступен:
Подключение сетевого диска WebDAV
Эта функция Windows позволяет получить доступ к файлам по WebDAV не только в файловых менеджерах (Far Manager и т.д.), но также и в командной строке и в проводнике Windows.
В Windows 7 есть встроенный веб клиент, который подключает облако WebDAV как обычный сетевой диск с присваиванием буквы. При подключении следует ввести адрес, который зависит от хранилища.
Строка подключения WebDAV для Яндекс.Диска:
Строка подключения WebDAV для Box:
Подробные инструкции с картинками: Does Box support WebDAV?
Строка подключения WebDAV для OneDrive потребует cid – это идентификатор учетной записи, его можно посмотреть в адресной строке браузера, если открыть веб-интерфейс OneDrive:
Подключение и настройка WebDAV на Windows
При желании использовать хранилище Яндекс на ОС Windows без установки программного обеспечения понадобится подключить сетевой диск. Последовательность действий в этом случае такова:
- Правой кнопкой мыши кликнуть на ярлыке компьютера, на рабочем столе или в меню «Пуск».
- В открывшемся списке выбрать пункт «Подключить сетевой диск».
- Нажать кнопку «Готово» и дождаться подключения сетевого диска.
- После непродолжительного ожидания автоматически откроется окно безопасности Windows, в котором потребуется в соответствующих полях ввести данные своей учетной записи с привязанным хранилищем Яндекс.
Доступ к меню подключения сетевого диска присутствует и в проводнике – пункт во вкладке верхнего горизонтального меню «компьютер». Правильно выполнив последовательность действий, появиться новый сетевой диск с файлами. Отвязка каталога Яндекс выполняется через меню «Отключить сетевой диск».
Лимит на размер файла
Исходное значение 50 000 000 байт. Задается в байтах параметром реестра:
Например, можно задать 500 000 000.
Читайте также: