web-dev-qa-db-ja.com

複数のPC間で構成ファイルの同期を維持する

私はいくつかの異なるLinuxマシンと、それぞれにたくさんのconfigファイル(およびフォルダー)を持っています。

例えば:

~/.ssh/config
~/.config/openbox/rc.xml
~/.config/openbox/autostart.sh
~/.scripts/ ( folder )
~/.bashrc
...etc

これらのファイルを私のマシン間で同期させるためのシンプルでエレガントな方法はありますか(インターネットにアクセスできません)

また、一部のファイルでは、若干異なる必要があるため、より高度な同期プロセスが必要になります...例:

デスクトップキーボードにはさまざまなホットキーがありますが、ラップトップにはほとんどありません。私が使う XF86MailデスクトップでThunderbirdを開きますが、 Meta+M 私のラップトップで。

私のホームデスクトップとワークデスクトップはどちらも「マルチユーザー」指向であり、私のラップトップは私にぴったりです。私のラップトップでは、openboxのrc.xmlファイルを/etc/xdg/openbox/rc.xmlがデスクトップの~/.config/openbox/rc.xml

15
Stefan

ファイルをバージョン管理下に置きます。これには、ファイルの同期の維持(1つのマシンでのコミット、他のマシンでの更新)の促進、変更の履歴の保持(先月機能したプログラムの障害を簡単に見つけることができる)など、複数の利点があります。

私はCVSを使用してリポジトリをUnisonまたはスニーカーネットと同期していますが、これは、広く利用可能な分散バージョン管理の前からこれを行ってきたためです。これから始める人は、Bazaar、darcs、git、Mercurialなどの適切な分散バージョン管理ツールを使用する必要があります...

マシン間で異なる必要のあるファイルを管理することは、常に少し面倒です。構成言語が条件を許可する場合は、それらを使用します。それ以外の場合、インクルードメカニズムがある場合は、それを使用して構成ファイルをマシン依存の部分と共有部分に分割します。マシンに依存するすべての部分を別のディレクトリ(~/.local/NAME/など)に保持します。このディレクトリは常にシンボリックリンク(各マシンの~/.here-> local/NAME)を通じて参照されます。マシン固有の部分に保持されているパラメーターから共有部分のスクリプトによって生成されるファイルがいくつかあります。これにより、GUI構成インターフェイスを介してこれらのファイルを間接的に変更することはできません。 /etcでの構成は避けてください。マシン間で同期するのが難しくなります。

PuppetCfengine は、ファイルを同期するための2つの優れたツールです(およびその他多数)。

3
rkthkr

今日では、最初の(dvcs)と2番目の(dropbox)の応答のうち、最高の応答を sparkleshare で得ることができます。

1
emjayess