Резервное копирование данных на бесплатный облачный сервис Wuala

в 13:08, , рубрики: backup, linux, Rsync, Wuala, Серверное администрирование, метки: , , ,

Админы бывают двух видов: те кто…

  1. еще не делают бекапы
  2. уже делают

Итак, бекапы уже делаем, и не важно, свой ли опыт или чужой послужил тому причиной. И уже знаем, что один бекап нужно иметь под рукой, а другой — за тысячу километров. С бекапом который «под рукой» — в целом все понятно. С удаленным бекапом тоже все просто, если у вас есть желание и возможности оплачивать эти услуги. А если хотим «на шару»?


Один из таких сервисов — Wuala. Предоставляют бесплатно 5 Гб хранилища (можно бесплатно расширить еще на несколько гигов, участвуя в промо-акциях, приглашая друзей и т.п.), позиционируют свой сервис как секурный: данные передаются и хранятся в зашифрованном виде (если верить рекламе). Отмечу, что клиент Wuala может работать как с графическим интерфейсом (довольно неплохим), так и из консоли.

Доступ к файловой системе облачного хранилища можно получить через клиентский софт. В линуксе этот софт (java!) позволяет примонтировать через свой специфический модуль fuse мое хранилище в отдельную папочку. Симлинки, правда, не поддерживаются, но файлы хранить может, а это уже многое.
Архитектура приложения такова, что вначале требуется запустить демон, который все инициализирует, обновляется, если потребуется, соединяется с облачными серверами. Последующие инвокации wualacmd позволяют передавать демону команды, такие как login, logout.

К сожалению, мне не удалось найти метод, повзоливший бы узнать, что wuala-демон успешно запустился и готов принимать команды. В состоянии пока демон не готов принимать команды инвокации wualacmd завершаются с кодом 0, так что чувствуется «теплота и забота» разработчиков о пользователях консоли. Привязываться к конкретному синтаксису сообщений об ошибкеуспехе в консоли — тем более что они могут быть самыми разными — мне не захотелось. Отчасти поэтому код проверок успешности завершения некоторых операций в скрипте реализован так, как реализован, и отводится целых 10 секунд просто на подождать, пока wuala-демон не подготовится к работе. Ну для ночного, запускаемого по расписанию скрипта 10 секунд — не велика потеря.

Секурность Wuala

Пару слов на счет секурности Wuala. Для меня подозрительным выглядит тот факт, что смена типа доступа с приватного на публичный с доступом по ссылке происходит незамедлительно. Даже для больших файлов. Как такое может быть, если файл хранится на сервере в зашифрованном виде?
Может, сервера вуалы умеют на лету расшифровывать файлы, помеченные как публичные? Если да, то wuala тогда хранит у себя мой пароль для дешифровки данных? Каким ключом зашифрованы данные? Кто им владеет, только я? Или нет никакого ключа при хранении, а шифруется лишь передача файлов по сети? И шифруется ли? — Я не проверял.

Как бы там ни было, хранение своих важных данных с использованием инфраструктуры третьей стороны требует от нас шифрования своих данных. gpg, encfs или любой другой инструмент — в помощь.

В результате работы над этой задачей был рожден приблизительно такой скрипт. В результате выполнения скрипта запустится (если еще на запущен) демон wuala в сессии screen с именем «wuala». Произведется логин с указанным логином и паролем и выполнился код из функции wualaSync с последующим логаутом. По завершении работы скрипта демон в скрине не прибивается, чтоб быстрей включалось в следующий раз.

Bash-скрипт для бекапа данных

#!/bin/bash

####BASIC SETTINGS
WUALA_LOGIN=ваш-логин
WUALA_PASSWORD=ваш-пароль
WUALA_PATH=~/WualaDrive/$WUALA_LOGIN/

####HELPER FUNCTIONS FOR WUALA
#test if wuala is already running
function wualaRunning {
a=`screen -ls |grep wuala | wc -l`
return $a
}

function wualaLogin {
a=`wualacmd login $WUALA_LOGIN $WUALA_PASSWORD | grep "ogged in" | wc -l`
return $a
}

function wualaLogout {
wualacmd logout
}

function startWuala {
screen -d -m -S wuala wualacmd
wualaRunning
isRunning=$?
if [[ "$isRunning" -eq "0" ]]; then
 echo "Wuala failed to run"
 exit
fi

#sleep to let wuala connect to server
#FIXME: need a better way of doing this
sleep 10
return 1
}

####YOUR CODE TO SYNC BACKUP DATA TO WUALA
function wualaSync {
#Here comes code to sync files between local filesystem and $WUALA_PATH
rsync -av --del /storage/backup/mysql-encoded $WUALA_PATH/myserver-backup/
}

####MAIN SEQUENCE
#check if wuala is running
wualaRunning
isRunning=$?

if [[ "$isRunning" -ne "0" ]]; then
 echo "wuala is running. Logging in"
else
 echo "starting wuala"
 startWuala
fi

wualaLogin
loggedIn=$?

if [[ "$loggedIn" -ne "0" ]]; then
 wualaSync
 wualaLogout
else
 echo "Failed to log in"
 exit
fi

Всяческие улучшения — welcome!

Автор: uazure

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js