| SaAnVi.Ru - пародии - фотоприколы - банная - политота - компота - житота |
| сцылки - блог - ВРПВ - думы - рецензии - поржать - фотосеты - ПОДДЕРЖАТЬ |
популярные посты ▶
|
Syncthing![]() да, это именно сервер под Syncthing В рамках отказа от Яндекс.Диска, на которого я недавно ругался, было принято решение испробовать программу Syncthing. Проект этот не новый, давно находится в стабильной версии и, кроме всего прочего, абсолютно бесплатен! При некоторых условиях, он может заменить собою многочисленные интернет-облака (при использовании Syncthing место под файлы ограничено только фантазией; конечно, нужны компьютер(ы) и накопители, но вложиться придётся единожды, а не сидеть на подписках, как я это делал много лет). Syncthing - консольное приложение, но для работы оно не требует специальной GUI-версии; достаточно в любом браузере подключиться к 127.0.0.1:8384 и откроется панель управления. Абсолютно все настройки можно сделать через неё; мне даже не потребовалось читать мануалы, всё и так понятно. Особенности, которые я сходу не понял (но понял), опишу ниже в этом обзоре. Консольную версию программы под нужную операционку можно скачать с официального сайта syncthing.net. С ней можно сразу работать, но придётся добавить исполняемый файл в автозагрузку системы. Для ленивцев там же есть ссылки на проект Syncthing Windows Setup; это отдельная программа, которая при старте сама скачивает последнюю версию и прописывает её запуск в системных задачах, а также создаёт ярлык на рабочем столе. Интерфейс панели управления в браузере автоматически подхватывает язык системы (русская локализация есть), первичных настроек не так много и все они понятные. Есть возможность очень тонкого тюнинга, но я туда даже не лазил - всё и так прекрасно работает. Программу нужно установить на все компьютеры, участвующие в облаке, а потом начинается самое интересное. Syncthing - это P2P-прога по типу торрентов. Да, вы не ослышались - именно торрентов. Синхронизация делается отовсюду, со всем, с чем можно, используя как прямые соединения (если два клиента находятся в одной сети), так и соединения через анонсы на других серверах (relay). Пресловутый белый IP тут желателен, но не обязателен. Например, у меня один из двух главных серверов находится мало того, что за роутером с "серым" IP провайдера - так ещё и за мостом (bridge) от другого роутера (провода было тянуть обломно, а 300Мбит вайфаю тут в самый раз). И всё находится, устанавливается и синхронизируется. Используются даже такие диковинные протоколы, как QUIC (неплохо работает, кстати). Участвующие в облаке машины передают файлы друг другу, как только могут. Кто первый встал - "того и папки". В результате, синхронизируемые файлы через какой-то промежуток времени (зависит от пропускной способности сети) приводятся в одинаковое состояние на всех устройствах. И да, Syncthing сохраняет даты создания файлов! Этот позор в Яндекс.Диске, судя по всему, не исправят никогда... А я никогда Яндекс.Диску этого не прощу, ведь он уничтожил даты у моих файлов, а я это заметил далеко не сразу. Парадигма работы Syncthing проста и гениальна одновременно. В отличие от большинства проприетарных сервисов, у которых папка синхронизации одна-единственная (Яндекс.Диск ещё и почему-то не позволяет подключать переносные устройства), в Syncthing этих папок можно насоздавать вагон и маленькую тележку. И они могут находится на совершенно разных носителях. Начало кончаться место - добавил винт, создал туда новую папку и вали, сколько хочешь. Остальные машины могут автоматически "подтянуть" эту папку себе, а могут и не подтягивать (зависит от настроек). Лично я все "автодобавления" выключил; куда лучше контролировать процесс руками. Теперь подходим к хитрому вопросу. Почему Syncthing изначально не является настоящим облаком? Является, но надо соблюсти некоторые условия. Как минимум: два постоянно работающих сервера, хранящие полную копию всех папок, при этом - географически разнесённые. Если главный сервер всего один, или даже их несколько, но все они располагаются в одной квартире - это не особо похоже на облако (внезапный факап с электропитанием или ещё что похуже может отправить всё к праотцам). Но если разнести хотя бы две машины на приличное расстояние, завязать их в одну сеть Syncthing и сохранять на них все папки - это на 99.99% станет похожим на действительно защищённое резервное копирование. Какова вероятность того, что из строя выйдут одновременно два компьютера, находящиеся в разных местах? Вернее, даже не сами компьютеры, а накопители. Вероятность есть, конечно, но что-то подсказывает, что в таком случае вам уже будет не до облачных синхронизаций. Да, есть вопросы к провайдерам, но уже много лет я могу назвать их достаточно стабильными. Это 20 лет назад вечно были какие-то косяки; сейчас они редки. Тривиальные вопросы с поддержанием жизнедеятельности сервера выходят за рамки данной статьи. Но и эти вопросы в наше время - не вопросы; ИБП с управлением и умные розетки в помощь. Именно схему с двумя разнесёнными серверами я и реализовал у себя. Живу в частном доме в пригороде, небольшой сервер уже давно есть (кстати, почти 15 лет эта приблуда работает 24/7 и прекрасно справляется с хранением файлов и прочими мелкими задачами). В городе, на квартире супруги, где мы появляемся в рабочее время, был установлен второй такой же "сервачок". Немного колдовства с настройками Syncthing - и вот тебе настоящее облако. Свободное от проприетарщины, кривых рук и левых глаз. Масштабируемое и куда более тонко настраиваемое. Как я уже указал, для одиночного сервера Syncthing подойдёт любая машинка, ведь производительность вообще не важна. Хиленький неттоп по типу вышеуказанного - самое то; главное - подключить накопитель побольше. Стоимость таких (БУшных) неттопов нынче - около 1500 рублей без накопителя (всё равно втыкать свой, побольше). Машинка потребляет порядка 16Вт, даже затрапезный ИБП способен "держать" её около часа и больше. Не создаёт особого шума (можно поколдовать с охладой и вообще сделать её пассивной). Далее, опишу некоторые не сразу бросающиеся в глаза детали и особенности более подробно. Шифрование на отдельных узлахSyncthing передаёт данные шифрованными каналами. Однако, есть даже возможность шифровать файлы на отдельных устройствах! Для этого устройство объявляется "ненадёжным" в настройках и задаётся пароль, которым шифруются все файлы. Ещё раз: шифруются не при передаче (они и так передаются шифрованными), а уже на самом компьютере, который считается "ненадёжным". Т.е. к нему может подойти любое тело, но файлы оно увидит в шифрованном виде, и обломается. Идём дальше: при подключении другого компьютера к "ненадёжному", мы задаём тот же пароль, и скачиваемые файлы будут расшифрованы. Информация может гулять даже между двумя "ненадёжными" компьютерами! Просто для этого не надо объявлять их между собой "ненадёжными", и они будут передавать шифрованные файлы без изменений. Невероятная гибкость! ВерсионированиеОно есть, и куда более настраиваемое, чем у многих коммерческих решений. Задаётся куча параметров - сколько версий файла хранить, в течение какого времени и т.п. Все версии сохраняются в скрытую подпапку .stversions, при желании их можно просто смотреть оттуда любым файловым менеджером. Самое интересное, версионирование настраивается совершенно отдельно на разных компьютерах и для разных папок; где-то можно его включать, где-то выключать, где-то хранить разное количество копий. Красота! Я включил версионирование только на одном из главных серверов. В конечном счёте, это защита от дурака, а я таковым являюсь очень уж редко. :) Повышенные требования к качеству каналаКак любой P2P-клиент, Syncthing может выкушать весь доступный канал связи, если приходится синхронизировать много файлов за раз. Есть настройки, какую полосу занимать, но для синхронизации между главными серверами неразумно ограничивать скорость - всё должно быть как можно быстрее. Я был нехило удивлён, когда один из серверов, подключенный по WiFi-мосту, периодически был почти недоступен через удалённое администрирование, потому что канал был забит в доску. Для WiFi, кстати, весьма критично, когда забиты как исходящий, так и входящий каналы - соединение на роутере начинает падать на глазах. В общем, не удивляйтесь тому, что подключенный через WiFi клиент или сервер при синхронизации больших объёмов сильно тупит (возможно даже, придётся сменить роутер или тонко настроить беспроводное подключение, как пришлось сделать мне). Всё свелось к тому, что я поставил фиксированные параметры связи (канал, стандарт и ширину полосы), отключил всякие "улучшения" типа TX burst - только тогда всё заработало более-менее приемлемо. Разумеется, у старого доброго провода подобных проблем не наблюдается, и по возможности лучше использовать проводное подключение. Требования к памяти и ресурсамSyncthing занимает (примерно) вдвое меньше места в ОЗУ чем, например, Яндекс.Диск (при том же объёме облака, разумеется). Фоновая активность тоже особо не доставляет проблем; приложение работает с пониженным приоритетом и не мешает пользователю. Периодическое сканирование подключенных папок на предмет изменений можно распознать разве что по шуршанию HDD (под хранение файлов и по сию пору логично использовать именно его). Продумайте схему подключенияНе стоит добавлять абсолютно все участвующие в облаке компьютеры в синхронизируемые списки друг друга. Это утверждение выглядит странным; как же так, ведь сила P2P в том, что файл быстро распространяется между всеми, используя доступные каналы? Дело в том, что при такой парадигме сильно увеличивается вероятность конфликтов. Например, на одном из клиентов создался файл, его начали синхронизировать другие, и тут либо файл быстро удаляется на создавшей его машине, либо (что ещё интереснее) на какой-то из других, куда он уже успел закачаться. Оставшиеся компьютеры останутся в прострации; им надо будет сначала синхронизировать файл (чтобы потом удалить), но его уже в одной из баз нет, а что же делать, как жить? При таких глюках помогает только убрать синхронизацию с заглючившей папки и добавить папку заново; простой рескан не помогает. С таким конфликтом я реально столкнулся, просто сымитировав его. И потом сталкивался не раз, при непонятных обстоятельствах (в основном, виноваты внезапные обрывы связи). Самая устойчивая к подобным вещам схема - схема "звезды": один главный сервер, все остальные клиенты (включая "резервный сервер") подключаются к нему. Контактов между прочими участниками никаких. Если что и происходит - оно происходит между одним из клиентов и сервером, остальные про это "не знают". Остаётся лишь вероятность глюка, когда один и тот же файл усиленно изменяют два разных клиента. "Звезда" оказалась для меня не слишком удобной из-за географической разнесённости главных серверов. Клиенты, находящиеся слишком далеко от "самого главного сервера", довольно хорошо тупили из-за нестабильности связи и соединений через анонсы. Поэтому, реализовал другую схему: главные серверы видят друг друга, а простые клиенты видят только один из главных серверов (логично, самый ближний, доступный в локальной сети). Распространение также идёт по цепочке, а не разом на всех; случись что в начале цепочки - дальние клиенты не успеют "осознать" событие. Спойлер: даже при такой конфигурации глюки практически неизбежны, если синхронизируемые файлы часто подвергаются изменениям с разных клиентов одновременно. В принципе, на глюки можно и забить; другие файлы всё равно будут синхронизироваться. Плюс, у того же Яндекс.Диска бывают ошибки и покруче (лично видел один "интересный" случай у клиента, который синхронизировал очень много файлов, и тогда тоже помогло только полностью удалить их из облака и закачать обратно). Работа на смартфонеЗдесь Syncthing не может похвастать вообще ничем. Сами разработчики под смартфоны приложения не пилят, правда, есть энтузиасты. На андроиде существует приклада, она не предлагает никаких удобств по сравнению с другими облаками. Даже нельзя посмотреть файлы, не закачивая их; придётся создавать папку на смартфоне и синхронизировать её. То же самое про синхронизацию фоток со смарта - лучше забыть, чем пытаться настроить (это возможно, но с неудобствами). Для себя решил просто оставить бесплатную версию Яндекс.Диска; в своё время я подсуетился с приглашением рефералов и места там вполне хватает для того, чтобы держать нужные файлы, имея к ним доступ "на выезде". Ну а для серьёзного бэкапа - уже Syncthing. Качество синхронизацииКак истинный гик, я устроил Syncthing настоящую "прожарку". Копировал "попапочно" своё облако и сравнивал, что получилось. Специально устраивал так, что информация проходила от одного клиента через два сервера, оказываясь на другом клиенте. Далее я побитово проверял результат (50-100Гб за раз)... Доселе мне не приходилось уличать Яндекс.Диск в ошибках, но в ходе тестов я их всё-таки выявил. Причём, сперва подозревал Syncthing; оказалось, он невиновен. Просто скачанная с одного клиента папка была не совсем копией папки на другом клиенте, хотя на обоих стоял Яндекс.Диск, который был обязан обеспечивать полную синхронизацию. Конкретно: некоторые XLS-файлы (буквально несколько штук) были разные. Судя по всему, странный глюк возник, когда на одной из машин эксельский файл был просто открыт и сохранён без изменения данных. Возможно, при этом обновились какие-то даты внутри файла (я смотрел - не совпадает 3-4 байта, причём постоянно в одном и том же месте, если считать от начала). Данные внутри документов были фактически одинаковыми, но файлы - разные. Каким образом Яндекс.Диск не засекал это месяцами - понять затрудняюсь. Syncthing всегда делал абсолютно идентичные копии во всех тестах. С сохранением времени у файлов, чёрт побери! Что ещё понравилось: Syncthing не рвётся синхронизировать файл через наносекунду после его обновления, а выжидает довольно приличное время (секунд 10-20). Вновь создаваемые файлы могут тут же изменяться, и чтобы не гнать лошадей, лучше подождать. Параноидальный Яндекс.Диск, например, показывает "ошибки синхронизации", когда только что созданный файл изменяется через пару секунд, и это напрягает. Что в итоге?Syncthing заменил мне Яндекс.Диск в части резервного копирования 99% информации. Осталось лишь немного "периодически нужных" файлов, к которым желательно иметь доступ везде, где есть мобильный интернет (например, моей вокально-музыкальной программе). В мобильном плане Syncthing неудобен, т.к. синхронизирует всю папку разом, в то время как далеко не всё из неё на данный момент требуется. Ну и автовыгрузку фото/видео со смартфона, конечно, тоже лучше поручить Яндекс.Диску. Он и в бесплатной версии прекрасно с этим справляется. Чувствительные данные ушли из "дядиного" облака, чему я рад. С этим (вроде бы) и так не было проблем, но теперь-то файлы только в моем владении. Ну и "дядя" отныне не будет беспокоить своими кривыми руками, которыми он кодит облачных клиентов для PC. За время экспериментов даже успел выйти из строя винчестер на одном из главных серверов. Винт сразу был подозрительный, хотя прогнозы не давали фатальной картины. Но - не сдюжил. Особой проблемы это не доставило; просто удалил все синхронизируемые папки из настроек (просто так подсунутый новый винт для Syncthing не сработал, хоть имел ту же букву диска и заранее созданную папку для облака). При удалении папок ранее синхронизированные с сервером машины тут же предложили "поделиться" папками заново, что и было сделано. Данные восстановились за несколько часов. Статья написана на опыте, полученном в течение четырёх месяцев. Именно столько личное облако находится под управлением Syncthing. В системе два сервера, занятые только под синхронизацию, и пять рабочих мест, пользующихся данными.
Профессиональная компьютерная помощь в Красноярске от автора статьи ;)
©2026, Анатолий Савенков
Комментариев нет
Вы не зарегистрированы. Зарегистрируйтесь или войдите в систему, чтобы не набирать каждый раз проверочный код (и иметь другие приятные функции на сайте). Действует суточный лимит анонимных комментариев для защиты от троллей, школоло-хакеров и спам-ботов. На текущий момент осталось комментариев: 10. Добавить комментарий
Фулюганствовать не надо: соблюдайте правила приличия. Я не люблю комментариев не по делу типа "Оццтой!" и им подобных. Если хотите что-то покритиковать или поучить кого-то жизни - делайте это с чувством, с толком и с расстановкой.
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

