ネットワークとインターネット経由でホームフォルダーを同期するにはどうすればよいですか?


8

私はラップトップをUbuntu-desktopと一緒に使用してすべての作業を行っていますが、オフィスに座っているだけでローエンドのデスクトップがあります。Ubuntu-serverをインストールしてラップトップのホームフォルダー全体をミラーリングし、ラップトップのハードディスクをフォーマットするときの作業を簡単にすることにしました。

私が仕事をしているときはいつでも、両方のマシンがネットワークに接続され、sshを介して簡単に(そして高速に)通信します。私が仕事をしていないときでも、デスクトップはssh経由でアクセスできます。理想的には、何かを変更するたびに、同期がバックグラウンドで自動的に行われます。ラップトップで行う変更はサーバーに同期する必要がありますが、その逆は必要ありません。

私はこのためのソフトウェアがあることを知っています。私の質問は、上記の目的を達成し、ローカルネットワークの速度を最大限に活用するために使用できるソフトウェアは何ですか?大きなファイルを扱うこともあるので、同期プロセスでは、2つのコンピューターがローカルネットワークを共有していることを認識し、それを利用する必要があります(常にインターネット経由で同期するのではなく)。

明確にするために、ここでは、インターネットを介した同期よりも、ネットワークを介した同期の方が重要です。私は理想的には、ソフトウェアが前者が利用可能かどうかをチェックし、そうでない場合は後者を試します。それが不可能な場合は、最初のケースが優先されます。

これが長すぎないことを願っています。前もって感謝します。

回答:


11

SSH経由でのみオフィスサーバーに接続できる場合は、rsyncを使用するのが最適です。トランスポートプロトコルとしてSSHを使用でき、変更されたブロックのみを送信することにより、スマートアルゴリズムを使用して大きなファイルの転送を高速化できます。

一方向の同期のみが必要なため、ラップトップからオフィスサーバーへのパスワードなしのSSH認証をセットアップするだけで、次のような簡単なコマンドで開始できます。

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

同期するファイル/ディレクトリのリストを調整するための追加--include--excludeオプション。たとえば、2台のコンピューターが同じOS(同じバージョン)を実行していない場合、プログラム設定(「ドットファイル」)の転送は危険です。私の提案は、すべての「ドットファイル」を除外--exclude="$HOME/.[a-z]*"することから(つまりを使用 )、次に安全に共有できるプログラムの構成ディレクトリを選択的に追加することです(これはプログラムごとに確認する必要があります)。さらに、Webブラウザーのキャッシュ$HOME/.cacheは常に除外できます。rsyncinclude / excludeルール構文の詳細については、manページの「FILTER RULES」セクションを参照してください。

ただし、にrsyncは「連続操作」モードがないため、crontabから定期的に実行する必要があります 。


これはいいですね。サーバーをインストールしたらすぐにテストします。1つの質問:SSHプロトコルは自動的にサーバーへの最短接続を使用しますか?つまり、クライアントとサーバーの両方がオフィスネットワークにある場合、ローカルネットワーク経由で接続しますか、それとも常にインターネット接続を試みますか?
Malabarba、

ちなみに、あなたはブラウザのキャッシュについて正しいです。除外すべきフォルダに関する他の提案はありますか?私の目的は、すべての個人ファイル、プロファイル、設定、構成ファイルを同期することです。
Malabarba、

1
@Bruce Connor:SSHは通常のIPルーティングアルゴリズムを使用してリモートホストに接続します。最初の除外リストの提案を含む回答テキストを更新しました。
Riccardo Murri、

ありがとう。競合を回避するために、ラップトップのホームフォルダーをサーバーのサブフォルダー(サーバーの実際のホームフォルダーではない)に同期する場合があります。
Malabarba、

@riccardomurri by "passwordless SSH authentication"とは、キーファイルベースのことですか?または、他の何か?
david.libremone 2011

3

rsyncではなくrdiff-backupを使用することをお勧めします。それはほとんどrsync ++です。

差分を転送する1対1のミラーであるrsyncとは異なり、rsyncには履歴メカニズムがあります。したがって、重要なものを台無しにして削除した場合は、1週間前に戻ってそれを取り戻すことができます。

ubuntu「サーバー」では、apt-get install rdiff-backupを実行するためにsshを実行する必要があるだけです。

クライアント上で。これを手動で実行するか、または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しかし、LAN内:192.168.1.253へ


スクリプトにいくつかの改行がないと思います。
Malabarba

2

私が知っているあなたの問題に対する完全な、パッケージ化されたソリューションはありません。おそらく、そのための小さなスクリプトを自分で書く必要があります。

同期自体はrsync、Riccardo Murriによってすでに説明されているように、によって行うことができます。Rsyncはファイルの変更された部分のみを転送するため、このタスクに最適です。

NetworkManagerDispatcherを使用して、ネットワークインターフェイスの接続/切断時にスクリプトを実行できます。したがって、正しいネットワーク上にあるかどうかを確認してからrsyncを呼び出すスクリプトを書くことができます。これにより、会社のネットワークに接続したときにデータが自動的に同期されます。

すでに述べたように、定期的にデータを同期するには、cronを使用できます。

sshを介してrsyncを使用する場合は、セキュリティも考慮する必要があります。ユーザーの介入なしに同期するには、パスワードのないキーファイルが必要です。このキーファイルを持っている人なら誰でも、それが属しているサーバーにアクセスできます。ノートブックとサーバーのデータを保護するために、ホームフォルダーを暗号化することを強くお勧めします。


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をホームフォルダーに設定できるとは思いません(少なくともまだです)。
Matthew

superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders読み通し -シンボリックリンクによる同期をサポートし、特定のドキュメント、グラフィック、スプレッドシートがある場合同期する必要があります-それらのコピーをDropboxに保持したり、Dropboxの場所に恒久的に保存して手間を省くことができます。
リハタム

1
おかげで、私はすでにプラットフォーム間でDropboxを使用しています。ここで探しているのは、多くのGBのファイルを無料で同期でき、ローカルネットワークを利用できるものです。
Malabarba

1

Sparkleshareを試してください:http : //sparkleshare.org/

Ubuntuリポジトリにはクライアントがあり、ウェブサイトにサーバーをセットアップする方法の説明があります。


素晴らしいプログラムのように見えます-最小限のハックソリューション。先月、バージョン1.0がリリースされました。
安倍

0

2015年の最適なソリューションはSeafileです:https ://www.seafile.com/en/download/

Sparkleshare開発者たちは、自分たちのツールは多くの小さなファイル、特にテキストファイルには適しているが、大きなバイナリファイルにはあま​​り適していないと語っています。

パフォーマンスに関しては、SparkleshareとOwncloudの両方を上回ります。

さらに、OwnCloudに比べて空腹なリソースの供給がはるかに少ないため、インスタンスは、24時間稼働のコンピューターとして問題なくバナナまたはラズベリーで実行できます。(私はバナナPiをお勧めしますが、ギガビットネットワークとSATAインターフェイスのため、少なくとも私にとってはファイルサーバーに適しています。)

ホームフォルダーを3台のコンピューターと同期しています。私はドットファイルを除外します。それらはgitリポジトリといくつかのロジックで処理されます。なぜなら、リカルドが述べたように、同じOSとリリースであっても、異なるコンピューターでドットファイルと他の構成を共有することにはいくつかの問題があるためです。たとえば、monitors.xmlや、ラップトップとマルチスクリーンデスクトップのIDEのいくつかの異なるレイアウト、または両方のコンピューターで開かれているプログラムについて考えてみてください。

同期に加えて、私はこのデータをborgbackup経由でバックアップします。重複排除を実行する非常に優れた新しいバックアッププログラムは、最初のバックアップ後に非常に高速で、多くのツールに欠けている多くの機能を備えています。

それは私にとって完璧なセットアップです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.