Итак, есть рабочая машина, есть ноут. Как лучше сделать так, чтобы я мог закончить работу на рабочей машине и продолжить на ноуте? Потом вернуться домой и продолжить работу на основной машине?
Программы — связаны с разработкой. Eclipse, тулзы и т д. В линуксе нуб, но как я понимаю, тот же eclipse — его просто можно скопировать. Это же и касается папки ~.
Но ведь есть же еще и всевозможные пакеты, пользователи, группы и т д. Их тоже нужно как-то синхронизировать.
Что думаете по этому поводу? Вообще, задача решаема? Ведь если железо разное, то, наверное, какой-то набор пакетов в принципе должен различаться.
Думал про виртуальную машину, но уж очень велико падение производительности.
PS: да, я знаю про dropbox и ubuntuone (но я предпочел lubuntu), знаю, что есть rsync (но никогда его еще не использовал). Ответом может быть просто совет, как написать скрипт и общие мысли на этот счет.
PPS: ну вот скажем, я на одной машине поставил какой-то тул через apt-get. потом создал пользователя и группу. а на другой как автоматически поставить тул и автоматически создать пользователя?
PPPS: а что вообще нужно синхронизировать? вот сходу: папки пользователей и /opt (например, через rsync), пользователей/ группы (пока не знаю как).
Не думаю, что синхронизировать абсолютно всё можно (и нужно). Я держу проекты в виртуальынх машинах (падение производительности я не замечаю, virtualbox). среду и инструменты один раз настроил и там и там. SSH ключи и доки проектов держу в дроп-боксе, код всё равно в GIT так что остаётся платформа под проекты — базы данных, система и т.д. — оно в virtualbox. Если виртуалка уж сильно «отстала по времени», то просто копирую образ диска (сбрасываю на mobile HDD), но обычно хватает сделать git pull. Если очень хочется, то можно держать виртуалки прямо на переносном HDD, думаю можно найти довольно быстрый.
Системы контроля версий. Например git. Можно поднять удалённый репозиторий на своём сервере или купить на github.
Делаю так и со своими проектами и рабочие проекты работают по тому же принципу. Работаем из офиса, но иногда нужно что-то сделать из дома. Всё сводится к простому git pull… git commit, git push.
ну вот скажем, я на одной машине поставил какой-то тул через apt-get. потом создал пользователя и группу. а на другой как автоматически поставить тул и автоматически создать пользователя?
мне верится, что если я скопирую один-в-один диск, оно не будет работать )
git, dropbox — это все понятно. они синхронизируют файл. надо бы понять, что кроме файлов нужно синхронизировать и как.
Мне кажется вы не в ту сторону смотрите. Зачем синхронизировать всю ОС? Или eclipse? Синхронизируйте только проект. Файлы проекта eclipse так же можно держать в git-репозитории. Зачем сам eclipse то?
в таком случае самое простое решение это виртаульная машина. Всё будет работать, если скопировать один-в-один образ. По началу не верится, потом привыкаешь :)
смотря что у Вас в приоритетах, кто-то скажет, что «всё другое» если расцветка консоли не совпдает, а кто-то не заметит разную версию ядра. Так что ответ — синхронизировать надо то, что Вам важно.
Тогда только виртуальная машина. Железо ведь разное, разные драйвера, подключение к интернету, видеокарта, разрешение и т.д. Но мне кажется Вы «загоняетесь». На деле это всё не нужно. Держите проекты в виртуалках а остальное настройте однажды дважды :) Иначе возня с настройкой синхронизации будет занимать больше сил чем установка недостающих пакетов.
Первое, что пришло в голову — удалённый доступ. Т.е. вы хоть из дома, хоть с работы на самом деле используете один и тот же компьютер, просто в одном случае локально, а в другом — удалённо. Но тут упирается в скорость интернета.
Второй вариант, на самом деле самый простой — физически таскайте с собой комп (разумеется, ноутбук) :)
Пришли на работу, воткнули монитор/мышь/клаву — и вот у вас рабочее место, продолжайте ровно с того момента, на котором закончили дома.
Других вариантов, как синхронизировать всё, я как-то не вижу. Но я, если честно, не вижу и смысла в такой синхронизации, т.к. сомневаюсь, что вы настолько часто ставите/удаляете пакеты или меняете рабочее окружение. А для всего остального есть MasterCard VCS, Dropbox и прочее.
Можно конечно и rsync'ом воспользоваться. Его вполне просто использовать rsync [что] [куда].
Настраиваете ssh без пароля, прописываете хост в ~/.ssh/config и потом просто сливаете rsync --progress -avz -e ssh yourserver:/home/user/www/project/ /home/user/www/project/
ну и так же заливаете rsync --progress -avz -e ssh /home/user/www/project/ yourserver:/home/user/www/project/
Но лучше git :)
Если задача стоит, синхронизироваться в общем случае (т.е. в идеале все, но я не знаю что именно может понадобиться синхронизировать завтра), то загляните в сторону виртуальных машин. Почти все (да я как посмотрю абсолютно все современные) позволяют сохранять текущее состояние, в т.ч. оперативной памяти (если это так может оказаться же актуально).
Заверните все свое внутрь виртуалки и таскайте с собой образ и текущие снапшоты на флешке/dropbox-аналоги.
Если же данных много больше размера флешки, делайте тупой bzdiff, сохраняя дома и на работе копию предыдущего/унесенного образа. Т.е. на каждом узле должны храниться копии текущего состояния на всех узлах, понятно что в один момент времени не все они одинаковы, вот для этого их и необходимо сохранить, а перед уходом делать bzdif с сохраненным, полученный патч применять на этот образ, нести его домой и применять его там (перед уходом на работу делать все то же самое но уже с образом рабочим).
При количестве узлов = 2, список команд для этого очень маленький — 2-3 строчки в каждом.
Использую Git и Dropbox, хватает за глаза. В том числе через Git синхронизирую всякие файлы конфигурации и тп. Еще как вариант можете купить себе VDS и вести разработку на нем. В этом случае будет неважно, откуда вы это делаете — из дома или с работы.