Как я могу синхронизировать мою домашнюю папку по сети и интернету?

8

Я использую свой ноутбук с Ubuntu-рабочим столом, чтобы выполнять всю мою работу, но у меня также есть рабочий стол низкого уровня в моем офисе, который просто сидит там. Я решил установить на нем Ubuntu-сервер и использовать его для зеркалирования всей домашней папки моего ноутбука, чтобы упростить процесс принятия решения о форматировании жесткого диска моего ноутбука.

Всякий раз, когда я на работе, обе машины подключены к сети и легко (и высокоскоростные) общаются через ssh. Когда я не на работе, рабочий стол все еще доступен через ssh. В идеале синхронизация должна происходить автоматически в фоновом режиме, когда я что-то изменяю. Это должно быть только одним способом: изменения, которые я делаю на ноутбуке, должны быть синхронизированы с сервером, но обратное не требуется.

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

Просто для ясности, синхронизация через сеть на самом деле для меня здесь важнее, чем синхронизация через Интернет. В идеале, программное обеспечение проверит наличие первого и, если нет, попробует второе; но если это невозможно, первый случай - мой приоритет.

Надеюсь, это не слишком долго. Заранее спасибо.

Malabarba
источник

Ответы:

11

Если вы можете подключиться к офисному серверу только через SSH, тогда ваш лучший выбор - использовать rsync : он может использовать SSH в качестве транспортного протокола и использует интеллектуальный алгоритм для ускорения передачи больших файлов, отправляя только измененные блоки.

Поскольку вам нужна только односторонняя синхронизация, просто настройте SSH-аутентификацию без пароля с вашего ноутбука на офисный сервер, и тогда вы можете начать с такой простой команды:

rsync -e ssh -a $HOME/ myuser@officeserv:

добавление --includeи --excludeопции для уточнения списка файлов / каталогов, которые вы хотите синхронизировать. Например, передача настроек программы («точечные файлы») может быть рискованной, если на двух компьютерах не установлена ​​одна и та же ОС (одна и та же версия). Мое предложение состоит в том, чтобы начать с исключения всех «точечных файлов» (то есть использовать --exclude="$HOME/.[a-z]*"), а затем выборочно добавить каталоги конфигурации программ, которые можно безопасно разделить (это должно быть видно для каждой программы отдельно). Кроме того, кеш веб-браузера и $HOME/.cacheвсегда может быть исключен. См. Раздел «ПРАВИЛА ФИЛЬТРА» на rsyncстранице руководства для подробного обсуждения синтаксиса правил включения / исключения.

Однако rsyncне имеет режима «непрерывных операций», поэтому вам придется периодически запускать его из вашего crontab .

Риккардо Мурри
источник
Это звучит хорошо. Я проверю это, как только я установлю сервер. Один вопрос: использует ли протокол SSH самое короткое соединение с сервером? Я имею в виду: будет ли он подключаться через локальную сеть, если клиент и сервер находятся в офисной сети, или он всегда будет пытаться подключиться к Интернету?
Малабарба
Кстати, вы правы насчет кеша браузера. Любое другое предложение папок я должен исключить? Моя цель - синхронизировать все личные файлы, профили, настройки и файлы конфигурации.
Малабарба
1
@ Брюс Коннор: SSH будет подключаться к удаленному хосту, используя обычный алгоритм IP-маршрутизации. Обновлен текст ответа с предложением для первоначального списка исключений.
Риккардо Мурри
Спасибо. Чтобы избежать конфликтов, я мог бы синхронизировать домашнюю папку моего ноутбука с подпапкой на сервере (а не с реальной домашней папкой сервера).
Малабарба
@riccardomurri под «аутентификацией SSH без пароля» вы имеете в виду keyfile-based? или что-то другое?
david.libremone
3

Я бы предложил использовать rdiff-backup поверх rsync. Это в основном просто rsync ++.

В отличие от rsync, который является зеркалом 1-1, которое передает различия, rsync имеет механизм истории. Так что, если вы облажались и удалили что-то важное, вы можете вернуться назад на неделю назад и получить это обратно.

На «сервере» Ubuntu вам просто нужно запустить ssh для apt-get install rdiff-backup.

на клиенте. Я бы либо запустить это вручную .. или через crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Если вы откроете свой порт 22 для интернета ... вы сможете запускать один и тот же скрипт в любом случае ... просто сделайте так, чтобы ваше имя хоста разрешалось локально по вашему локальному IP.

то есть. backupSrv.penguins.org будет разрешать внешний IP. 2.3.4.5 но внутри вашей локальной сети: до 192.168.1.253

csgeek
источник
Я думаю, что ваш сценарий пропускает несколько разрывов строк.
Малабарба
2

Я не знаю полного, готового решения вашей проблемы. Вы, вероятно, должны написать небольшой сценарий самостоятельно для этого.

Сама синхронизация могла быть сделана rsync, как уже объяснил Риккардо Мурри. Rsync передает только измененные части файлов, поэтому он идеально подходит для этой задачи.

Вы можете использовать NetworkManagerDispatcher для выполнения сценариев при подключении / отключении сетевого интерфейса. Таким образом, вы можете написать скрипт, который проверяет, что вы находитесь в правильной сети, а затем вызывает rsync. Таким образом, ваши данные будут автоматически синхронизироваться при подключении к сети вашей компании.

Для периодической синхронизации ваших данных вы можете использовать cron, как уже упоминалось.

Вы также должны учитывать безопасность при использовании rsync через ssh. Для синхронизации без вмешательства пользователя вам понадобится ключевой файл без пароля. Любой, у кого есть этот ключевой файл, может получить доступ к серверу, которому он принадлежит. Я настоятельно рекомендую зашифровать домашнюю папку, чтобы защитить данные на ноутбуке и на сервере.

Злой ученый
источник
1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

DropBox должен быть хорош в вашем случае, работает на Linux, Mac, Windows, прост в настройке и управлении.

Скачать DropBox

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

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

rihatum
источник
Я не верю, что вы можете установить свой Dropbox в качестве домашней папки (по крайней мере, пока).
Мэтью
superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders Прочитайте - он поддерживает синхронизацию через символические ссылки и, если есть определенные документы, графики, электронные таблицы, вы необходимо синхронизировать - вы все равно можете хранить их копии в Dropbox или постоянно сохранять их в папке Dropbox, чтобы сохранить хлопоты.
rihatum 15.10.10
1
Спасибо, но я уже использую Dropbox на разных платформах. То, что я ищу здесь, - это то, что позволяет мне синхронизировать многие ГБ файлов без платы и использовать преимущества локальных сетей.
Малабарба
1

Попробуйте Sparkleshare: http://sparkleshare.org/

В репозитории Ubuntu есть клиент, на котором есть инструкции по настройке сервера на их веб-сайте.

user60876
источник
выглядит как отличная программа - наименее хакерское решение; версия 1.0 была выпущена в прошлом месяце.
Абэ
0

Лучшее решение на 2015 год должно быть Seafile: https://www.seafile.com/en/download/

Разработчики Sparkleshare говорят, что их инструмент хорош для многих небольших и особенно текстовых файлов, но не так хорош для больших и двоичных файлов.

По производительности он превосходит Sparkleshare и Owncloud.

Кроме того, он гораздо менее требователен к ресурсам, чем OwnCloud - так что экземпляр может работать на Banana или Raspberry без каких-либо проблем в качестве 24/7 работающего компьютера. (Я бы порекомендовал Banana Pi, хотя из-за гигабитной сети и интерфейса SATA это был хороший выбор для файлового сервера, по крайней мере, для меня.)

Я синхронизирую свои домашние папки с тремя компьютерами. Я исключаю точечные файлы, они обрабатываются с помощью git-репо и некоторой логики, потому что - как упоминал Рикардо - существуют некоторые проблемы в совместном использовании точечных файлов и другой конфигурации на разных компьютерах, даже если это одна и та же ОС и выпуск. Подумайте, например, о файле monitors.xml или о другой разметке для IDE на ноутбуке и на многоэкранном рабочем столе - или о программе, открытой на обоих компьютерах.

Помимо синхронизации, я делаю резервную копию этих данных - через borgbackup. Это очень хорошая новая программа резервного копирования, которая выполняет дедупликацию, очень быстрая после первоначального резервного копирования и имеет множество функций, которых не хватает многим инструментам.

Это идеальный вариант для меня.

mpathy
источник