Намучившись с Bittorrent Sync, наконец стал виден свет в конце туннеля. Свободный Syncthing! Уже сейчас, он объективно лучше своего проприетарного аналога. Поговорим о нем.
*запись дополнена 5.10.2016
Краткое предисловие. Зачем этот софт вообще нужен? Для построения своего облачного хранилища. У всех нас есть какие то ценные файлы, которые мы боимся прое*ать потерять. Все с ума сходят как могут, строят дома всевозможные RAID массивы, закупают под это дело кучу хардов, некоторые даже пишут на болванки.. но все это жесть и от лукавого. Неудобно непрактично. А удобно так — когда ты файл изменил/добавил/удалил на одном компе, а он автоматически изменился на всех сразу. К тому же: RAID`ы разваливаются, харды сыпятся, SSD отказывают, материнки сгорают.. в общем, есть такое негласное жизненное правило — не хранить все яйца в одной корзине. Так и тут, особенно с вашими любимыми файлами — не храните их только на одном компе, чем больше — тем лучше. Ручная синхронизация, раз в месяц, в конечном счете задолбала даже меня. А файлы важные есть, и потерять их очень не хотелось бы.. именно поэтому, я в свое время впервые узнал про Bittorrent Sync и начал использовать его.
Bittorrent Sync или Syncthing? Этот вопрос мучил меня долгое время, но начал я именно с Sync. Вверху есть ссылка, где уже описана часть моих изысканий на эту тему. Изначально в нем были косяки (и касались они синхронизации больших и толстых фото), в моем случае это была моя папка Foto. В версии 2.0 до 2.3 эта папка просто не индексировалась как надо.. например, она весит 58 гиг, а проиндексировалось только 41. И все, а остального будто и нет… из-за этого бага, я эту папку синхронизировать не стал. После, вернулся я к этом вопросу уже в версии 2.3, где все вроде как пофиксили. А вот нифига! Ну да, папка теперь индексируется, но не синхронизируется.. вообще, никак. Что я только не пробовал, и мучился с обновлением этой лабуды на всех компах, и ее переустановкой, и многочасовой тормознутой переиндексацией… нифига. Ну тогда мое терпение просто закончилось и Sync я публично казнил. Я давно слышал про Syncthing, знал что проект развивается. Основное опасение было в том, что (где то прочитал в отзывах) ноды друг друга не видят. Все это фигня, на практике все оказалось намного лучше. Итак, все же Syncthing.
Король умер, да здравствует король! Свое знакомство с Syncthing я начал с версии 0.12.20. Утилита кроссплатформенная, т.е. не будет проблем с ее установкой где-либо. Очень удобная, понятный и внятный веб-интерфейс (нас не считают за дебилов, как в случае с Bittorrent Sync), все очень гибко. И что самое приятное — это все же оупенсорс, только открытие технологии. А это означает что здесь нет никаких бекдоров и прочего говна, все очень секьюрно. Но самое главное — она работает!!! Никаких тебе ограничений на количество папок и их размер, можно свободно использовать в production! Все синхронизируется как надо, с моей мега-папкой Foto все зашибись) Также есть расширенные варианты версионирования удаленных файлов в специальной корзине, причем это индивидуально настраивается для каждой папки и устройства по отдельности… короче говоря, что либо потерять тут попросту нереально. Ну что, далее я опишу как ее поставить и что она из себя представляет визуально. Для Ubuntu приятная новость — разработчики сами собирают пакеты и выкладывают их в свой репозиторий (не нужно «левых» сборок и PPA). Для Windows утилита работает в виде portable версии не требующей установки + обновляется сама, незаметно, автоматически. Но об этом чуть позже. Куда не ставь — есть нечто общее, нужно немного подшаманить при первоначальной настройке. Расслабьтесь и наберитесь чуть-чуть терпения…
Ставим Syncthing в Ubuntu. Итак, поехали (добавляем репозиторий, импортируем ключ, устанавливаем):
curl -s https://syncthing.net/release-key.txt | sudo apt-key add - echo "deb http://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list sudo apt-get update sudo apt-get install syncthing
Далее, будет первый запуск Syncthing. Дайте ему штатно запустится:
syncthing
Он там много чего напишет, бла-бла-бла. Если вы установили его на десктопе, то у вас откроется браузер и панель управления (по-умолчанию, доступ в этот веб-интерфейс доступен только вам): http://127.0.0.1:8384
Там уже можно с ней работать. Но если вы установили его на сервер, а там GUI нет, то сами зайти в свой веб-интерфейс вы не сможете. Остановите его (ctrl+c). После, надо поправить конфиги и разрешить в них удаленное управление:
nano ~/.config/syncthing/config.xml
Найти секцию (с 127.0.0.1):
<gui enabled="true" tls="false">
<address>127.0.0.1:8384</address>
</gui>
И заменить ее на (0.0.0.0):
<gui enabled="true" tls="false">
<address>0.0.0.0:8384</address>
</gui>
Все, настройка закончена. Теперь вы можете запустить Syncthing снова, зайти на его веб-интерфейс с другого компа. Вам сразу предложат придумать логин и пароль для авторизации, там же можно поставить галочку рядом с https подключением.
Настроим автозапуск Syncthing и ее работу как системной службы.
=========== Ubuntu 14.04 (upstart) ===========
Создаем сам скрипт:
sudo nano /etc/init/syncthing.conf
Содержимое скрипта (demouser заменить на своего юзверя):
description "Syncthing P2P sync service"
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
env STNORESTART=yes
env HOME=/home/demouser
setuid "demouser"
setgid "demouser"
exec /usr/bin/syncthing
respawn
Текстовый файл: syncthing
Дальнейший запуск и остановку нужно теперь выполнять следующей командой (запускается как демон, в фоне):
sudo initctl start syncthing sudo initctl stop syncthing
На этом все.
=========== Ubuntu 16.04 (systemd) ===========
Тут отличается, десктопный и серверный варианты. Десктопный — это значит, что сервис будет включатся и выключатся при логине/выходе из системы, серверный значит просто при запуске системы.. авторизация не требуется.
Серверный.. создаем сам скрипт:
sudo nano /etc/systemd/system/[email protected]
Содержимое скрипта:
[Unit] Description=Syncthing - Open Source Continuous File Synchronization for %I Documentation=man:syncthing(1) After=network.target [email protected] [Service] User=%i ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0 Restart=on-failure SuccessExitStatus=3 4 RestartForceExitStatus=3 4 [Install] WantedBy=multi-user.target
Текстовый файл: systemd-server
Дальнейший запуск и остановку нужно теперь выполнять следующей командой (запускается как демон, в фоне… darkfess заменить своим юзером), включим и запустим сервис:
sudo systemctl enable [email protected] sudo systemctl start [email protected]
Логи и статус:
sudo journalctl -e -u [email protected] sudo systemctl status [email protected]
… или
Десктопный.. создаем сам скрипт (создайте папки эти в home):
nano ~/.config/systemd/user/syncthing.service
Содержимое скрипта:
[Unit] Description=Syncthing - Open Source Continuous File Synchronization Documentation=man:syncthing(1) Wants=syncthing-inotify.service [Service] ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0 Restart=on-failure SuccessExitStatus=3 4 RestartForceExitStatus=3 4 [Install] WantedBy=default.target
Текстовый файл: systemd-desktop
Дальнейший запуск и остановку нужно теперь выполнять следующей командой (запускается как демон, в фоне… user менять не нужно), включим и запустим сервис:
systemctl --user enable syncthing.service systemctl --user start syncthing.service
Логи и статус:
journalctl -e --user-unit=syncthing.service systemctl --user status syncthing.service
Вот и все! Настройка автозапуска завершена.
=========== Windows (Task Manager) ===========
О нет! Неужели мы собрались использовать эту порочную ОС, погрязшую в ереси? А почему нет? Наверняка, в хозяйстве, где-нибудь такая да есть. Так почему бы не сделать из нее дополнительную ноду? Сделаем! Суть такова: скачайте с сайта и положите куда-нить Syncthing для Windows, это portable версия и ее можно сразу запускать, а после старта переходить в веб-интерфейс (все точно так же, как описано выше).
Нюанс в том, что она запускается как обычное приложение, а не как служба.. и болтается при этом в панели. Чтобы разрулить этот вопрос и настроить ее автозапуск, нужно использовать «Планировщик» (Task Scheduler). Просто настройке по аналогии, как показано на скриншотах ниже:
После создания, там же ее можно сразу и запустить из общего списка.
Веб-интерфейс Syncthing
Как видите, все довольно просто, наглядно и понятно. Почти все можно настроить.
Выводы
It just works! Я специально не стал перехешировать все эти 100 гиг (который уже были на моих нодах, после старого синхронизатора) и дал ему возможность проявить себя. И он справился. Никаких нареканий. Идеально!
Перечислю свои сокровища. Фотки.. весь мой архив фотографий. Сейвы.. все мои сейвы с игр, начиная с Diablo 2. Бекапы бекапов сайтов.. ну и конечно же, бекапы еженедельных бекапов ноута (папки /home), в зашифрованном виде.. ессесно. Нод еще планирую добавить. Если же будете включать Syncthing на «левых» компах (которые не 100% ваши), то рекомендую хранить файлы в специальных крипто-контейнерах, типа TrueCrypt/VeraCrypt… это позволит исключить несанкционированный к ним доступ.
А я уже фантазирую на тему применения этого инструмента в продакшне) Как минимум, со старта напрашиваются бекапы бекапов + синхронизация результатов работы камер между хранилищами в разных ЦОД. Но в целом, диапазон его применения намного шире… нужно просто немножечко пофантазировать.
Привет
подскажи что значит параметр Master в настройках папки?
Это значит, что эту папку можно изменить будет только на этом сервере.. остальным серверам она будет доступна только для чтения.
Минус в ужастном и корявом клиенте под андроид, соплями прикостылили исполянемый бинарь к апк и выложили в продакшн. Спасает одно — работает, главное не трогать.
Ну и лично не нравиться веб-2.0-интерфейс, даже на неслабых машинах подтормаживает и грузит проц. Причем грузит больше, чем сам демон :-/. простенький интерфейс упростил жизнь в разы. Нахуй мне трактор с гламурными фарами ??
Ну и еще по мелочи — спишу все на молодость.
А вообще отличное начинание.
Уважаемый Павел Жирнов, программу как сумели, так и сделали или «Дареному коню в зубы не смотрят.»
Кол тебе в глаза за темный фон и серый текст.
С телефона читать невозможно!
Уж простите ламера, но ни черта я не смог разобраться в web-интерфейсе… мне надо, чтобы конкретная папка зеркалилась в NAS. Куда прописать адрес папки, а куда адрес NAS?
Нужно 2 Syncthing поставить, один в одной точке, другой — в другой. В варианте с NAS, лучше всего использовать докер-контейнер и монтирование NAS по NFS к хосту, с пробросом внутрь контейнера.
NAS у меня тупенький… нельзя на него ничего поставить. Следовательно, Syncthing не про меня. Надо искать другую софтину.
Ну можно еще примонтировать по samba-cifs, без разницы, Synthing же без разницы как будет примонтирована папка.