私は自分のラップトップでUbuntuデスクトップを使用してすべての作業を行っていますが、そこに座っているオフィスにはローエンドのデスクトップもあります。 Ubuntuサーバーをインストールし、ラップトップのホームフォルダー全体をミラーリングして、ラップトップのハードディスクをフォーマットするときに作業を簡単にすることにしました。
私が仕事をしているときはいつでも、両方のマシンがネットワークに接続されており、ssh経由で簡単に(そして高速に)通信します。私が仕事をしていないときでも、デスクトップはssh経由でアクセスできます。理想的には、何かを変更するたびに、バックグラウンドで自動的に同期が行われます。ラップトップで行った変更はサーバーに同期する必要がありますが、逆にする必要はありません。
このためのソフトウェアがあることは知っていますが、私の質問は:上記の目的を達成し、職場でローカルネットワークの速度を最大限に活用するためにどのソフトウェアを使用できますか?時々大きなファイルを扱うので、同期プロセスは2つのコンピューターがローカルネットワークを共有していることを認識し、それを利用する必要があります(常にインターネット経由で同期するのではなく)。
明確にするために、ここでは、インターネット経由の同期よりもネットワーク経由の同期のほうが実際に重要です。理想的には、ソフトウェアは前者が利用可能かどうかをチェックし、利用できない場合は後者を試してみます。しかし、それが不可能な場合、最初のケースは私の優先事項です。
これが長すぎないことを願っています。前もって感謝します。
SSH経由でのみオフィスサーバーに接続できる場合、最良の選択は rsync を使用することです:SSHをトランスポートプロトコルとして使用でき、スマートアルゴリズムを使用して大きなファイルの転送を高速化します。変更されたブロックのみを送信します。
一方向の同期だけが必要なので、ラップトップからオフィスサーバーへのパスワードなしのSSH認証を設定するだけで、次のような簡単なコマンドで開始できます。
rsync -e ssh -a $HOME/ myuser@officeserv:
--include
および--exclude
オプションを追加して、同期するファイル/ディレクトリのリストを改良します。たとえば、2台のコンピューターが同じOS(同じバージョン)を実行していない場合、プログラム設定(「ドットファイル」)を転送することは危険です。私の提案は、すべての「ドットファイル」を除外することから始め(したがって、--exclude="$HOME/.[a-z]*"
を使用)、安全に共有できるプログラムの構成ディレクトリを選択的に追加することです(これはプログラムごとにプログラムで確認する必要があります)。さらに、Webブラウザーのキャッシュと$HOME/.cache
は常に除外できます。 include/exclude規則の構文の詳細については、rsync
のマニュアルページの「フィルター規則」セクションを参照してください。
ただし、rsync
には「連続操作」モードがないため、 crontab から定期的に実行する必要があります。
Rsyncではなくrdiff-backupを使用することをお勧めします。それはほとんどrsync ++です。
差分を転送する1-1ミラーだけであるrsyncとは異なり、rsyncには履歴メカニズムがあります。したがって、重要なものを台無しにして削除した場合は、1週間前に戻って元に戻すことができます。
Ubuntuの「サーバー」で、sshを実行してapt-get 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しかしLAN内:192.168.1.253へ
私が知っているあなたの問題に対する完全な、あらかじめパッケージ化されたソリューションはありません。そのためには、おそらく自分で小さなスクリプトを作成する必要があります。
Riccardo Murriが既に説明したように、同期自体はrsync
によって実行できます。 Rsyncはファイルの変更された部分のみを転送するため、このタスクに最適です。
NetworkManagerDispatcher を使用して、ネットワークインターフェイスの接続/切断でスクリプトを実行できます。したがって、正しいネットワーク上にいるかどうかを確認し、rsyncを呼び出すスクリプトを作成できます。これにより、会社のネットワークに接続したときにデータが自動的に同期されます。
すでに述べたように、定期的にデータを同期するには、cronを使用できます。
Sshを介してrsyncを使用する場合は、セキュリティも考慮する必要があります。ユーザーの介入なしで同期するには、パスワードなしのキーファイルが必要です。このキーファイルを持っている人は誰でも、それが属するサーバーにアクセスできます。ノートブックとサーバー上のデータを保護するために、ホームフォルダーを暗号化することを強くお勧めします。
Sparkleshareをお試しください: http://sparkleshare.org/
Ubuntuリポジトリにクライアントがあり、Webサイトでサーバーをセットアップする方法に関する指示があります。
DropBox | DropBox @ SuperUserhttp://www.dropbox.com/help/137
DropBoxは、Linux、Mac、Windowsで動作し、セットアップと管理が簡単な場合に適しています。
https://superuser.com/questions/147315/dropbox-to-sync-nix-home-folders
http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders
読み通す-シンボリックリンクを介した同期をサポートし、特定のドキュメント、グラフィック、スプレッドシートを同期する必要がある場合は、ドロップボックスでそれらのコピーを維持したり、ドロップボックスの場所に永続的に保存して面倒を保存することができます。
2015年の最適なソリューションはSeafileである必要があります。 https://www.seafile.com/en/download/
Sparkleshare開発者は、自分たちのツールは多くの小さなファイルや特にテキストファイルには適しているが、大きなファイルやバイナリファイルにはあまり適していないと述べています。
また、パフォーマンスの点では、SparkleshareとOwncloudの両方よりも優れています。
また、OwnCloudに比べて空腹のリソースがはるかに少ないため、インスタンスをバナナまたはラズベリーで24時間365日稼働するコンピューターとして問題なく実行できます。 (しかし、私はBanana Piをお勧めします。GigabitネットワークとSATAインターフェースのため、少なくとも私にとってはファイルサーバーに適した選択肢でした。)
ホームフォルダーを3台のコンピューターと同期します。 Ricardoが述べたように、同じOSとリリースであっても、異なるコンピューター上でドットファイルやその他の構成を共有する際にいくつかの問題があるため、ドットファイルを除外します。たとえば、monitors.xml、またはラップトップとマルチスクリーンデスクトップ上のIDEの異なるレイアウト、または両方のコンピューターで開かれたプログラムについて考えてください。
同期に加えて、私はこのデータをバックアップします-borgbackup経由。重複排除を行う非常に素晴らしい新しいバックアッププログラムは、最初のバックアップ後に非常に高速で、多くのツールに欠けている多くの機能を備えています。
それは私にとって完璧なセットアップです。