Резервное копирование данных на бесплатный облачный сервис 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!

ссылка на оригинал статьи http://habrahabr.ru/post/195010/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *