Использование BitTorrent Sync для резервного копирования

Владимир | | Разное.

bittorrent sync backups

BitTorrent Sync продукт довольно новый и на данный момент доступна только предварительная альфа-версия. Тем не менее, он доступен для трёх основных платформ (Windows, Linux, Mac OS) и прошёл довольно длительное тестирование. Я сам за две недели использования с серьёзными проблемами не столкнулся, да и отзывы других пользователей в основном положительные. Поэтому BitTorrent Sync вполне можно использовать уже сейчас не дожидаясь выхода официальной стабильной версии.

Настройка приложения достаточно простая. Если вы используете клиент для Windows или Mac, вам нужно будет только установить приложение, выбрать папки с файлами и скопировать секретные ключи с одного компьютера на другой. После этого синхронизация файлов будет работать автоматически. Но в установке Linux-версии на удалённом сервере есть несколько нюансов, о которых я и хочу рассказать.

Прежде всего, немного теории

Как несложно догадаться из названия, BitTorrent Sync использует P2P протокол для синхронизации файлов, т.е. вы можете организовать собственную сеть для автоматической передачи файлов без использования каких-либо сторонних сервисов.

Преимущество это или недостаток вопрос спорный. С точки зрения безопасности – преимущество. С точки зрения отсутствия оплаты и ограничений на объём передаваемых данных – тоже преимущество. Но для того, чтобы получить последнюю версию файла, устройство на котором этот файл находится, должно быть включено. Т.е. синхронизировать файлы между компьютерами дома и на работе довольно неудобно.

В любом случае, для резервного копирования BitTorrent Sync подходит практически идеально. Единственное условие, установить вы его сможете виртуальном (VPS) или выделенном (Dedicated) серверах, т.е. там, где у вас есть доступ к консоли. Для shared-хостинга придётся использовать какое-нибудь другое решение для резервного копирования.

Переходим к установке и настройке.

Шаг 1. Качаем и распаковываем архив с официального сайта

wget http://btsync.s3-website-us-east-1.amazonaws.com/btsync_i386.tar.gz

tar -zxvf btsync_i386.tar.gz

Папка, в которую вы распаковали BitTorrent Sync, принципиальной роли не играет, мы будем ссылаться на неё как на {PATH_TO_BTSYNC}.

Примечание. Я предполагаю, что у вас есть базовые навыки по работе в консоли Linux, поэтому буду только приводить соответствующие команды

Шаг 2. Создаём файл конфигурации

В принципе, можно запустить приложение и без него. Но это не безопасно. С клиентами для Windows и Mac вы работете через GUI, который доступен только вам, но Linux-версия запускает собственный web сервер. Т.е. если вы запустите BitTorrent Sync с параметрами по-умолчанию, то кто угодно сможет получить доступ к админке BitTorrent Sync и, соответственно, файлам на вашем сервере. Для этого ему нужно будет просто зайти по адресу

http://IP_вашего_сервера:8888/gui

Для создания конфига выполняем команду

./btsync --dump-sample-config > sync.conf

Настройки хранятся в JSON формате и хорошо задокументированы

{
  "device_name": "My Sync Device",
  "listening_port" : 0,                       // 0 - randomize port
 
/* storage_path dir contains auxilliary app files
   if no storage_path field: .sync dir created in the directory
   where binary is located.
   otherwise user-defined directory will be used
*/
  "storage_path" : "/home/user/.sync",

// uncomment next line if you want to set location of pid file
// "pid_file" : "/var/run/syncapp/syncapp.pid",


  "check_for_updates" : true,
  "use_upnp" : true,                              // use UPnP for port mapping


/* limits in kB/s
   0 - no limit
*/
  "download_limit" : 0,                      
  "upload_limit" : 0,

/* remove "listen" field to disable WebUI
   remove "login" and "password" fields to disable credentials check
*/
  "webui" :
  {
    "listen" : "0.0.0.0:8888",
    "login" : "user_name",
    "password" : "user_pass"
  }

/* !!! if you set shared folders in config file WebUI will be DISABLED !!!
   shared directories specified in config file
   override the folders previously added from WebUI.
*/
/*
  ,
  "shared_folders" :
  [
    {
//  use --generate-secret in command line to create new secret
      "secret" : "MY_SECRET_1",                   // * required field
      "dir" : "/home/user/bittorrent/sync_test", // * required field

//  use relay server when direct connection fails
      "use_relay_server" : true,
      "use_tracker" : true,
      "use_dht" : false,
      "search_lan" : true,
//  enable sync trash to store files deleted on remote devices
      "use_sync_trash" : true,
//  specify hosts to attempt connection without additional search    
      "known_hosts" :
      [
        "192.168.1.2:44444",
        "myhost.com:6881"
      ]
    }
  ]
*/

// Advanced preferences can be added to config file.
// Info is available in BitTorrent Sync User Guide.

}

Вам нужно как минимум изменить логин и пароль для доступа к web интерфейсу (строки 32, 33).

Также можно указать папки, которые вы хотите синхронизировать в разделе shared_folders. В этом случае web интерфейс будет отключён полностью.

Шаг 3. Запускаем BitTorrent Sync

./btsync --config sync.conf

(команду нужно выполнять из папки, в которой находится btsync, либо указать путь к нему).

После этого вы сможете зайти в админку

http://IP_вашего_сервера:8888/gui

btsync admin

Затем нажимаете кнопку «Add folder» и добавляете папки, которые нужно синхронизировать.

btsync add folder

Для каждой папки будут сгенерированы ключи доступа. Получить их можно нажав на кнопку с изображением шестерёнки напротив нужной папки.

Для резервного копирования вам нужно использовать «Read only secret»

btsync secret

В противном случае, BitTorrent Sync будет работать в режиме двунаправленной синхронизации. Т.е. если вы удалите файлы из папки с резервными копиями на вашем компьютере, то они будут удалены и на сервере. В «Read only» режиме файлы будут копироваться только в одном направлении, с сервера на ваш компьютер.

На локальном компьютере вам нужно будет просто добавить папку, в которой вы будете хранить бекап и указать «Read only secret».

btsync local

После добавления папки синхронизация начнётся автоматически. Хотя возможна небольшая задержка. У меня некоторые папки начинали синхронизироваться практически сразу, а некоторые – через 15-20 минут.

Ещё несколько полезных команд

Для остановки btsync можно использовать команду:

killall btsync

Для получения справки:

./btsync –help

Шаг 4. Настройка автозапуска

В теории сервер перезагружаться не должен, но на практике бывает по разному 😉 Поэтому настроить автоматический запуск BitTorrent Sync будет полезно. Настройка, естественно, зависит от дистрибутива Linux, который вы используете. Я приведу пример для Debian.

Создаём файл /etc/init.d/btsync со следующим содержимым:

### BEGIN INIT INFO

# Provides:         btsync
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start btsync at boot time
# Description:       Enable BitTorrent Sync service.
### END INIT INFO

#!/bin/sh
{PATH_TO_BTSYNC}/btsync --config {PATH_TO_BTSYNC}/sync.conf

И выполняем из консоли следующие команды

sudo chmod +x /etc/init.d/btsync
sudo update-rc.d btsync defaults

Заключение

Как видите, настроить BitTorrent Sync достаточно просто. К тому же, система не требует дополнительных расходов и потребляет минимум ресурсов (конечно, это будет зависеть от объёма файлов, которые нужно синхронизировать). Ещё одним преимуществом является возможность синхронизации на практически не ограниченное количество устройств. И, конечно, ничто не мешает вам использовать BitTorrent Sync вместе с другой системой резервного копирования.

В общем, советую попробовать.

Успехов!

  • TEN

    Добрый день. Я установил на NAS, но при перезагрузке он «забывает» папки. То есть после перезапуска в списке чисто. Подскажите, можно ли прописать в конфиг или еще каким образом сохранить эту информацию?

  • Alex

    отличный пример. спасибо.
    подскажите — как бы его запустить от имени www-data, или сделать так чтобы у всех создаваемых им файлов был владелец www-data.

    • Добавьте в /etc/init.d/functions

      daemon —user=www-data {PATH_TO_BTSYNC}/btsync

      Еще несколько вариантов здесь

  • Олег Сергеев

    Возможно ли увеличить кол-во символов в ключах («секретах»)?

    • Да, можно.

      Просто вручную введите ключ с нужным количеством символов.

  • pumainthailand

    А версионирование данных есть?