LINUX.ORG.RU
ФорумAdmin

Постоянная синхронизация двух машин.

 , , , ,


0

2

Добрый вечер!

В основном работа происходит удалённо из дома. Заключается в написании кода на Python, C++, взаимодействии с оборудованием по USB. Но иногда прямо очень надо что-то делать в офисе, например, когда случается показывать наработки начальству или когда надо отлаживать код с другим комплектом оборудования. Поскольку работа в офисе не ограничивается только демонстрациями, то бывает нужно дописать/собрать что-то по месту, поэтому и среды разработки со всеми библиотеками, исходниками и вообще всем желательно иметь под рукой. Возникает желание сделать синхронизацию двух систем по сети. И не только какого-нибудь каталога /home/user/mycode, а вообще всей ОС. Чаще всего только в одну сторону, но иногда и в обратную.

Вопрос: Как это лучше сделать? Может есть какие-то готовые решения?
На компьютерах различаются материнские платы и процессоры, видеокарты одинаковые. Но Linux не винда, от разного оборудования проблем быть не должно.
ОС Ubuntu 18.04, машины находятся в одной VPN. Никаких MySQL и других БД в системе не имеется, т.е. нет особой опасности получить нецелостное состояние.

Думал делать просто rsync'ом по расписанию. На домашней машине создавать LVM снапшот, и с него копировать на удалённую. Но не уверен, можно ли на удалённой
просто так переписывать все системные файлы во время работы или надо установить ещё одну ОС для использования во время копирования.

Возможно это лучше делать через какое-то перевалочное сетевое хранилище (сервер с расшаренной директорией).

Пока не придумал, как обезопаситься от конфликтных ситуаций. Например, если изменения с домашней машины ещё не все скопировались, а на офисной уже произошли свои.

Или лучше разделить копирование файлов ОС и файлов в /home? Приходила мысль монтировать /home по сети, но это не вариант, т.к. с устройств надо много и быстро писать.

Что посоветуете?

★★★★★

Я не совсем понял про системные файлы, у вас что, не из пакетов всё устанавливается?

mky ★★★★★
()
Ответ на: комментарий от mky

Я не совсем понял про системные файлы, у вас что, не из пакетов всё устанавливается?

Основная часть из пакетов. Есть немного скомпилированного в /usr/local. Есть snap.

Я писал о том, чтобы синхронизировать на уровне файлов. И не уверен, что так правильно делать на рабочей системе. Да, Linux позволяет переписывать открытые файлы, но пользовательское окружение может удивиться. Или надо для синхронизации принимающую систему загружать в каком-то light режиме.

ls-h ★★★★★
() автор топика

Syncthing вещь. Юзаю для всего. Не жрет, голову не дурит, грамотно обрабатывает переименования/перемещения ибо трекает изменения на уровне фс. Переехал с гугл-драйва на него.

arty_bishop
()
Ответ на: комментарий от arty_bishop

поддакну syncthing'у - отличный бесплатный опенсорс проект. работает в демоне, есть поддержка IOnotify
минус попался один - ужастный врапер под андроид. для бекапа/синхронизации телефона перешел на resiliosync (в девичестве btsync) коммерческий продукт, в замен которого и создавался syncthing.
в принципе syncthing следующий этап развития rsync.

pfg ★★★★★
()
Ответ на: комментарий от alexru

Dropbox

Для всей ОС целиком? о_О

ls-h ★★★★★
() автор топика
Ответ на: комментарий от arty_bishop

Syncthing вещь

Через это можно копировать всю ОС полностью (и системные и пользовательские файлы)?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Deathstalker

Dropbox

Может быть я не очень точно выразил мысль. Мне прямо всю ОС полностью клонировать туда и обратно. Прямо корень (т.е. / ) системы и скормить в Dropbox?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Мне прямо всю ОС полностью клонировать туда и обратно.

Сомнительно, что такое можно сделать надежно. Не проще обновлять ОС их средствами и клонировать только то, что сами добавили?

Прямо корень (т.е. / ) системы и скормить в Dropbox?

Не выйдет.

alexru ★★★★
()

Постоянная синхронизация двух машин

не нужна.

Лучше синхронизировать только документы [+ конфигурационные файлы] через git/rsync/syncthing/rslsync/etc.

На две машины установить один дистрибутив и идентичный набор пакетов. Этого достаточно.

aquadon ★★★★★
()

Вам нужно чтото типа docker, перенес конфиг, получил дубль системы, ну и rsync свои файлы разработки

Можно хитрее, чтото типа сервера конфигов puppet, но тогда все изменения в системе надо делать через него. Нажал кнопку, он засинхронил 2 машины, можно делать что надо

Ну и можно поднять свой гит, чтоб содержать много файлов, синхрониться через него. Но это касается только пользовательских файлов. Зато удобно, можно разруливать изменения где бы они не произошли

ism ★★★
()
Последнее исправление: ism (всего исправлений: 1)
Ответ на: комментарий от post-factum

Может, тебе тонкий клиент лучше?

Не думаю. Есть оборудование, которое требует USB 3 результаты работы с ним визуализируются через OpenGL. Будет тормозить.

ls-h ★★★★★
() автор топика
Последнее исправление: ls-h (всего исправлений: 1)

Загружаешься по PXE, монтируешь NFS, изменения ОС и пользовательские данные сохраняешь туда. Примерно так.

anonymous
()
Ответ на: комментарий от anonymous

NFS, изменения ОС и пользовательские данные сохраняешь туда

Как при этом со скоростью работы? Что, если у меня высокий ввод/вывод?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Ввод/вывод по сети можно свести на моменты инициализации и выключения ОС. В NFS писать только снапшоты, а в остальное время в локальную ФС в RAM или на диске.
Для начала почитай [1], [2], [3], пусть тебе тонкие клиенты и не интересны.
1. https://en.wikipedia.org/wiki/Diskless_node#Principles_of_operation
2. https://en.wikipedia.org/wiki/Diskless_Remote_Boot_in_Linux
3. https://en.wikipedia.org/wiki/ISCSI#Network_booting

anonymous
()
Ответ на: комментарий от anonymous

Внизу есть ссылки. Отпишись потом.

Пока не раскурил. Оно мне поможет просто копировать по сети или конфликты разруливать и применять изменения тоже?
На машине источнике мне самому надо будет сделать снапшот LVM или копировать с живой системы. Аналогично, на машине приёмнике, можно будет копировать «на живую»? Что будет, если изменения есть и там и там?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Загружаешься по PXE,

Обе машины видят друг друга по VPN. Как загрузиться по PXE через VPN?

ls-h ★★★★★
() автор топика
Ответ на: fix от anonymous

Linux_Terminal_Server_Project

Это надо его сильно нестандартно извратить, чтобы было удобно.
Мне же не только /home надо зеркалировать, но и корень системы.
Получается, поработал на одной машине, пересобрал ndb-образ, так?

ls-h ★★★★★
() автор топика

нет ни малейшего объяснения зачем копировать всю систему включая хлам вроде кеша браузера или системных(!) файлов для того чтобы скомпилять или запустить код который можно взять из специальных хранилищ кода под названием version control system.
кроме, конечно же «Возникает желание сделать»
а если что-то компиляется долго, то это что-то можно взять в специальных местах вроде binary repository в виде артефакта.

system-root ★★★★★
()
Ответ на: комментарий от ls-h

надо для синхронизации принимающую систему загружать в каком-то light режиме.

И делать сначала закачку всех изменённых файлов, чтобы не возникло проблем при обрыве связи. И смотреть, чтобы какое-нибудь автообновление не перезаписывало системные файлы в момент создания снапшота. А потом ещё получить проблемы от одинаковых конфигов, допустим ip-адресов или маршрутов.

mky ★★★★★
()

Возникает желание сделать синхронизацию двух систем по сети.

Syncthing, полет будет отличный, все продумано до тебя.

И не только какого-нибудь каталога /home/user/mycode, а вообще всей ОС.

Не надо так, от слова совсем. Настройки сети тоже общие будут? Лизы DHCP?? Приватные ключи??? Надо систему управления конфигурациями или NixOS.

t184256 ★★★★★
()
Ответ на: комментарий от tailgunner

Работай в виртуалке и носи ее с собой.

Чем это лучше, чем просто носить с собой ОС?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Работай в виртуалке и носи ее с собой.

Чем это лучше, чем просто носить с собой ОС?

Я не знаю, что ты понимаешь под «носить с собой ОС», но, если ты умеешь это делать без виртуалки, то виртуалка не нужна.

tailgunner ★★★★★
()
Ответ на: комментарий от system-root

нет ни малейшего объяснения зачем копировать всю систему включая хлам вроде кеша браузера или системных(!) файлов

Объяснение есть. Костыли и подпорки проросли в системные файлы. При сборке некоторого софта приходилось вносить правки, например, в /usr/lib/x86_64-linux-gnu/pkgconfig/, иначе не собиралось, т.к. в Ubuntu там наделали несуществующих зависимостей.

Есть ещё много всего в /usr/local, которое собрано с некоторой магией.
Повторить это возможно, но долго.

А на кеш браузера совершенно всё равно, если он будет мигрировать туда-сюда, то пусть будет. Браузер там почти не открывается.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от alexru

Syncthing - отличная штука, сам использую. Но она не сможет синхронизировать всю систему. Вообще не думаю, что это в принципе можно реализовать так, чтобы работало быстро и надёжно (то есть без поломки системы).

Deleted
()
Ответ на: комментарий от Deleted

Ноутбук

Не вариант. Не видел что-то ноутов на двух Xeon'ах с кучей USB 3 (ил выше) и несколькими сетевыми адаптерами. А если бы такой и был, никто бы покупать не стал.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от t184256

Настройки сети тоже общие будут? Лизы DHCP?? Приватные ключи???

Нет, несколько файликов можно добавить в исключения. Приватные ключи пусть будут. Предполагается, что компьютеры не будут одновременно включёнными.

И вообще мне не обязательно прямо систему как есть переносить, может быть её в LXC контейнер засунуть.... или ещё как. Вот я и спрашиваю, как это сделать, т.к. сам пока не придумал.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Я не знаю, что ты понимаешь под «носить с собой ОС»

Достал накопитель из системника и пошёл, пришёл, воткнул. На данный момент оно так и делается. :-)

ls-h ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Работай в виртуалке и носи ее с собой.

Виртуалка ещё и тормоза создаст дополнительные. Надо будет туда видео прокидывать, все подключаемые устройства и т.п.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Один раз написать конфиг, где прокинуть видео и пачку портов usb, а потом носи виртуальный диск из дома на работу

dhameoelin ★★★★★
()
Ответ на: комментарий от ls-h

Достал накопитель из системника и пошёл, пришёл, воткнул. На данный момент оно так и делается. :-)

Если есть возможность втыкать загрузочные диски - нормальный вариант. Чем он тебя не устраивает?

Виртуалка ещё и тормоза создаст дополнительные.

Как там, в 2000 году? У нас в 2018 тормоза виртуалки уже пренебрежимы.

Надо будет туда видео прокидывать, все подключаемые устройства и т.п.

Зачем все? O_o Только сеть, а дальше просто подсоединение по VNC или Spice дает тебе всё, что надо.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Чем он тебя не устраивает?

Сейчас это один HDD на 3ТБ. Его можно убить по неосторожности. Скоро добавится SSD для быстрой записи на него данных с оборудования. И надо будет носить два устройства. Да разъёмы тыкать туда-сюда тоже не хочется.

Как там, в 2000 году?

Очень всё ресурсоёмкое. Нагрузка на видеокарту под 100%. Видеокарту можно прокинуть. Но не уверен, быстро ли будет отображаться всё это через VNC или надо будет ещё монитор второй.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Скоро добавится SSD для быстрой записи на него данных с оборудования. И надо будет носить два устройства.

Опять же - зачем? Если вы не пишете на SSD в обход ОС, то SSD - это просто каталог в ФС.

Да разъёмы тыкать туда-сюда тоже не хочется.

Ы? Ты носишь SATA-диск?

Очень всё ресурсоёмкое. Нагрузка на видеокарту под 100%. Видеокарту можно прокинуть. Но не уверен, быстро ли будет отображаться всё это через VNC или надо будет ещё монитор второй.

Если на машине единственная видеокарта - да, наверное, прокидывать - не вариант. Тогда диск - самое нормальное решение.

tailgunner ★★★★★
()

бывает нужно дописать/собрать что-то по месту, поэтому и среды разработки со всеми библиотеками, исходниками и вообще всем

Может поменять сам подход к разработке?Что может быть проще - синхронизировать файлы плэйбука и ансибл собирает идентичные среды разработки или тестирования где угодно в каких угодно масштабах.

bass ★★★★★
()
Последнее исправление: bass (всего исправлений: 1)
Ответ на: комментарий от t184256

Некоторые знают, отдельные личности даже используют.
Для задачи синхронизации / zfs send подходит более чем. Но я бы предложил поменять хотелки, так как не думаю что синхронизировать вообще всё что можно разумный выбор.

Deleted
()
Ответ на: комментарий от Deleted

Для задачи синхронизации / zfs send подходит более чем.

Угу, для задачи синхронизации замороженного с RO. Называется «задачей инкрементального резервного копирования снапшота». Синхронизации двух запущенных систем, да еще и остальными дикими требованиями ТСа ты из zfs send не сваришь. Но ты же шапку не читал, тебе же просто ляпнуть.

t184256 ★★★★★
()
Ответ на: комментарий от tailgunner

Если вы не пишете на SSD в обход ОС, то SSD - это просто каталог в ФС.

В смысле, прироста скорости не будет, т.к. кеш?
А если пишется больше, чем есть оперативной памяти?
А читать потом быстро?

Ы? Ты носишь SATA-диск?

Пока было так. Можно купить какой-нибудь mobile rack. Но я пока вообще изучаю варианты, как сделать нормально.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Deleted

никто ещё zfs не посоветовал

Как сейчас с этой ФС в онтопике? Давно не следил за этим, раньше, ЕМНИП, было через FUSE только.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Ы? Ты носишь SATA-диск?

Пока было так.

Ужас какой. Купи USB-диск.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.