Синхронизация папок, конфигураций, программ, локального сервера и базы данных на 2 компьютерах Debian

Я использую debian как на ноутбуке, так и внутри виртуальной машины на другом компьютере.

Я хочу иметь возможность синхронизировать эти две системы в обоих направлениях, чтобы я мог

  • сделать какую-нибудь работу, скажем, на виртуальной машине, затем перейти на ноутбук, синхронизироваться и работать дальше оттуда,
  • вернуться на ВМ, синхронизироваться и дальше работать...

После некоторого поиска в Google мне кажется, что мне нужен инструмент Unison, потому что, среди прочего, он имеет функцию двусторонней синхронизации.

Что мне сейчас интересно, так это что / что нет и как синхронизировать между двумя машинами.

Я понял, что в моем случае нужно учесть три основных момента (хотя я мог кое-что забыть):

  • синхронизировать большую часть (все?) содержимого домашней папки, потому что оттуда мне нужны файлы, над которыми я работаю, псевдонимы bash, параметры конфигурации большинства программ (которые я бы хотел, чтобы они были одинаковыми между двумя компьютерами) мои домашние запеченные скрипты и пр.
  • синхронизация содержимого локального сервера apache и баз данных mysql, которые я там запускаю, для локального тестирования некоторых веб-сайтов, которые я создаю (для возможности локального тестирования на каждой машине отдельно / независимо)
  • синхронизация установленных программ по этим системам.

Итак, во-первых, что касается домашней папки, я подумал, что простая синхронизация всей домашней папки будет хорошей идеей. Но если присмотреться к этому более подробно, то кажется, что некоторые скрытые файлы / каталоги на виртуальной машине отсутствуют, следовательно, необходимы на ноутбуке (например,.vboxclient-clipboard.pid, .vboxclient-display.pid...) и наоборот,

Мне также было интересно узнать о некоторых скрытых файлах, которые кажутся специфичными для каждой машины (.cache, .dbus, .gconf)

Поэтому мне было интересно, существуют ли общие правила (исключая некоторые конкретные расширения файлов или известные файлы / папки), которые я мог бы применить, чтобы убедиться, что я не копирую отдельные системные файлы и действительно придерживаюсь того, что мне нужно, и того, что является общим на 2 машины (мои данные и файлы конфигурации, такие как пользовательский список серверов для filezilla).

Затем, что касается синхронизации локального сервера и базы данных MySQL, я подумал, что

  • Я также могу синхронизировать папку /var/www/ между машинами с Unison (хотя это не очень хорошая идея)
  • Мне нужно было бы написать скрипт для дампа, сравнения и при необходимости заменять базы данных mysql каждый раз (хотя звучит очень неэффективно)

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

Вдобавок ко всему этому, я думаю о переустановке Debian на каждой из этих двух машин, поэтому мне также было интересно, если во время установки Debian будет иметь значение, если я выберу на каждой машине разные настройки, касающиеся:

  • шифрование диска: в основном я хотел бы зашифровать диск с помощью LVM на ноутбуке, но мне это не понадобится на виртуальной машине,
  • имя хоста: это не критично, так как я могу использовать одно и то же имя хоста на обеих машинах, но мне было интересно, можно ли использовать 2 разных имени (например, debianlaptop и debianvm)
  • пароли пользователей: я бы использовал одинаковые имена пользователей на обеих машинах, но было бы неплохо использовать разные пароли (также для root)
  • Выбор программного обеспечения: я определенно установил бы их на обеих машинах: "Среда рабочего стола Debian" (с xfce в качестве менеджера dektop, установленным в начале установки), "Веб-сервер", "Стандартные системные утилиты", но мне интересно, действительно ли это Необходимо установить "Ноутбук" на ВМ и, если это повлияет на синхронизацию.

Для всего вышесказанного моей главной заботой является возможность сделать лучший выбор, чтобы

  • Я могу синхронизироваться между ними самым автоматическим способом, с минимальным ручным вмешательством, насколько это возможно (в основном, просто запускаю unison на компьютере, на котором я начинаю работать, и в конечном итоге позабочусь об установке некоторых программ и синхронизации базы данных)
  • Я синхронизирую только то, что необходимо, избегая файлов / папок / опций, которые специфичны для системы или могут перезаписывать специфические настройки системы, что приводит к нежелательным последствиям...

1 ответ

Что касается синхронизации вашего домашнего каталога с Unison и исключения определенных системных каталогов, есть два варианта. Во-первых, чтобы подробно описать все, что вы хотите синхронизировать, и пропустите все системные каталоги:

# unison-profile.prf
root = /home/user
root = ssh://user@VM//home/user
path = Documents
path = .bashrc
.
.
.

Другим вариантом будет синхронизировать все, а затем подробно изложить пути, которые вы хотите игнорировать:

# unison-profile.prf
root = /home/user
root = ssh://user@VM//home/user
path = Name {.*,*}
ignore = Path .cache
ignore = Path .dbus
.
.
.

Note that we need path = Name {.*,*} rather then just path = Name * to sync all files and directories with names that begin with a dot.

Другие вопросы по тегам