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

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

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

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

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

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

8
задан 15 October 2010 в 19:34

6 ответов

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

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

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

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

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

11
ответ дан 15 October 2010 в 19:34

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

В отличие от rsync, который представляет собой зеркало 1-1, которое передает diff, 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

0
ответ дан 15 October 2010 в 19:34

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

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

Скачать DropBox

https://superuser.com/questions/147315/dropbox-to-sync-nix-home-folders

[ 119] http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

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

0
ответ дан 15 October 2010 в 19:34

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

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

0
ответ дан 15 October 2010 в 19:34

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

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

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

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

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

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

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

0
ответ дан 15 October 2010 в 19:34

Не существует полного, готового решения вашей проблемы, о котором я знаю. Для этого вам, вероятно, придется написать небольшой сценарий.

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

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

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

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

0
ответ дан 15 October 2010 в 19:34

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

Похожие вопросы: