12.08.2018 21:29
OlegON
 
Дошли тут руки до подаренных 100Гб на Яндекс.Диске. Не пропадать же добру...
Стал разбираться, как же ими можно воспользоваться.
Для начала сразу оговариваю, что клиенты с GUI мне совсем не нужны, речь шла о том, чтобы периодически скидывать не очень нужные и зашифрованные файлики "про запас" с сервера, где никаких десктопов нет, поэтому штатные десктопные утилитки я не буду рассматривать вообще.

Итак, самый простой и хорошо описанный способ - консольная утилита от самого Яндекса. Работает куда шустрее webdav, который используется во всех остальных случаях, но все время просится в демоны и в целом как-то не очень уютно было ее использовать... Еще, не дай, удалится что-то на диске, а эта штука обратно засинхронизирует все... Кроме того, синхронизируется строго одна директория. Т.е. нельзя несколько накидать в разные потоки и ждать, пока на Диск засинхронизируется.

Второй способ именно для закидывания нескольких файликов. Вещь.
Код:
curl --user user@yandex.ru:password -T "{file1.zip,file2.zip}" https://webdav.yandex.ru/
с ним, мне кажется, все вообще очевидно... Вводим свои имя-пароль и кидаем файлики сколько душе угодно. Работает и укладывание в поддиректории. Как удалять - не разбирался.

Третий, наиболее подходящий для массовой синхронизации, но, малость нестабильный и дико тормозной по непонятной для меня причине способ. Да, это про webdav в виде файловой системы. Для начала надо будет поставить davfs2 вашим пакетным менеджером. Затем, в файлике /etc/davfs/secrets прописать строку
Код:
https://webdav.yandex.ru ваш_логин ваш_пароль
это избавит от соответствующих вопросов при монтировании. И, соответственно, монтируем, например, так...
Код:
mount -t davfs https://webdav.yandex.ru /mnt/yandex
Вот и все... Теперь в /mnt/yandex у вас содержимое Яндекс.Диска в rw. Можно туда и обратно что-то скопировать, либо воспользоваться rsync. Обратите внимание, что owner/groups лучше на диске не трогать, поэтому пользоваться чем-то вроде
Код:
rsync -rtv
из неприятного - сервак webdav у Яндекса тормозит, поэтому, какой бы у вас канал ни был, больше 2Мб/сек в среднем не взлетает. При этом еще долгие sync и неочевидные ошибки при проблемах соединения.

В целом же - вполне себе подходящая штука для каких-то дублей бекапов.
13.08.2018 19:32
OlegON
 
У Яндекс.Диск (первый вариант) обнаружилась еще особенность... В данный момент при отсутствии каких-либо движений она занимает 3Гб памяти.
14.08.2018 20:39
OlegON
 
И у монтирования davfs выяснился серьезный минус. Эта хреновина наращивает /var/cache/davfs2 и плевать хотела на директиву cache_size в конфиге. У меня выжрала все свободное место на системном диске, после чего rsync упал. Ну и ни хрена себе :(
14.08.2018 20:58
OlegON
 
Нашел еще один способ синхронизации - программа cadaver.
К моей печали, она не может рекурсивно заливать файлы, потому для меня малополезна. Но желающие поупираться именно в этот способ, могут внимательно присмотреться к такому скрипту.
Код:
#!/bin/sh

usage () { echo "$0 <src> <cadaver-args>*" >/dev/stderr; }
error () { echo "$1" >/dev/stderr; usage; exit 1; }

test $# '<' 3 || \
    error "Source and cadaver arguments expected!";

src="$1"; shift;
test -r "$src" || \
    error "Source argument should be a readable file or directory!";

cd "$(dirname "$src")";
src="$(basename "$src")";
root="$(pwd)";
rc="$(mktemp)";
{
    find "$src" '(' -type d -a -readable ')' \
    -printf 'mkcol "%p"\n';
    find "$src" '(' -type f -a -readable ')' \
    -printf 'cd "%h"\nlcd "%h"\n'            \
    -printf 'mput "%f"\n'                    \
    -printf 'cd -\nlcd "'"$root"'"\n';
    echo "quit";
} > "$rc";

cadaver -r "$rc" "$@";
rm -f "$rc";
для него надо будет прописать имя пользователя и пароль в ~/.netrc, чтобы на каждый файл его не вводить.
14.08.2018 21:22
OlegON
 
Нашел еще один вариант. Вроде и работает :)
Утилитка rclone. Поддерживает Yandex.Disk из коробки.
Сначала надо сделать
Код:
rclone config
идентификаторы и секрет заполнять не надо - вылезет браузер с авторизацией, создайте репозиторий reponame (обзовите его как хотите, я для примера)
Потом
Код:
rclone sync -v --fast-list /mnt/backup reponame:/backup
достаточно шустро копирует... Вроде, нигде больше не гадит... Кстати, эта утилита работает еще с кучей других облачных хранилищ.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.