четверг, 7 марта 2019 г.

Заливаем множество папок в облако через консоль

Возникла необходимость закачать множество папок с файлами на Яндекс.Диск минуя браузер. Почему минуя браузер? Потому что, ввиду того что папок  не мало, а файлов в них еще больше, закачка через браузер обычно приводила к немалой нагрузке центрального процессора.

Для начала нам понадобится упаковать каждую папку в архив.
Но если это делать вручную, то это займет уйму времени. Да и вообще кому интересна рутинная работа. Поэтому будем автоматизировать процесс )

Для упаковки можно использовать любой консольный архиватор.
В данной статье будем использовать архиватор 7zip.  Установить для Mac OSX его можно через порты
port install p7zip
или через brew
brew install  p7zip
И так для создания архива со всеми вложенными поддиректориями и файлами в них нужно использовать команду
7z a -r
Но нам нужно упаковать несколько папок, поэтому нам приходит на помощь команда while, которая обрабатывает что либо в цикле. Для этого мы передадим в цикл список папок, которые хотим заупаковать командой ls. В итоге получится такая команда:
ls | while read i; do 7z a -r "${i%.*}.7z" "$i"; done
В ней мы передаем листинг директорий в цикл, который по очереди упаковывает эти директории в архивы.
Яндекс.Диск работает через расширение протокола HTTP  - WebDAV (Web Distributed Authoring and Versioning). Поэтому нам нужно скачать и установить WebDAV клиент, работающий из командной строки. Будем использовать cadaver. Уставновить его так же можно через
 port install cadaver 
или через
brew install cadaver
Для подключения к  Яндекс.Диск запускаем наш WebDAV клиент и указываем адрес сервера
cadaver  https://webdav.yandex.ru
Затем сервер попросит ввесит логин и парель вашего аккаунта. После авторизации можно просмотреть список доступных команд, для этого нужно ввести команду ?.
 ls         cd         pwd        put        get        mget       mput
 edit       less       mkcol      cat        delete     rmcol      copy
 move       lock       unlock     discover   steal      showlocks  version
 checkin    checkout   uncheckout history    label      propnames  chexec
 propget    propdel    propset    search     set        open       close
 echo       quit       unset      lcd        lls        lpwd       logout
 help       describe   about
Для закачки нескольких файлов понадобится команда mput.
И так, заходим в локальную директорию командой
lcd ~/your_dir 
и выполняем команду
mput ./* *
где первый аргумент это все локальные файлы в текущей папке, а второй - файлы на сервере.

Комментариев нет:

Отправить комментарий