web-dev-qa-db-ja.com

直接通信できないマシン間でユニゾンプロファイルの同期を維持する最も簡単な方法は何ですか

Unisonを使用して、自宅のコンピューターと仕事用のコンピューターの間でいくつかのファイルを同期しています。ただし、2台のコンピューターはssh経由で直接接続できないため、USBサムドライブ(アクセス許可を保持するためにext4でフォーマットされています)を介して同期します。

私が抱えている問題は、Unisonが同期プロファイルの構成をフォルダー自体ではなくローカルに(.unisonディレクトリに)保存することです。これは、無視されたファイルなどの一部の情報を、私が保持している2つのプロファイルに複製する必要があることを意味します。

2台のコンピューター間で同期プロファイルを自動的に同期させる方法はありますか?

2
hugomg

同期するディレクトリ内にプロファイルを保持します。内部~/.unison、実際のプロファイルにシンボリックリンクを設定します。これは私にとってうまくいきました。また、新しいマシンをすばやく「ブートストラップ」することもできます。プロファイルをUSBドライブから新しいコンピューターにコピーして、新たに起動するだけです。

「落とし穴」が1つあります。すでにUSBドライブに存在するファイルと一致するignore行を(1台のコンピューター上の)プロファイルに追加すると、そのファイルはUSBドライブから他のコンピューターに転送されます。 ignore行にもかかわらず、次のユニゾン同期。その理由は、プロファイルが転送されるようにスケジュールされているが、next同期まで(他のコンピューターでは)有効ではないためです。それ以外はまだ問題ありません。

1
Edward

私が最終的に得た代替案は、2段階の同期を行うことです。ユニゾンプロファイルを同期するためのユニゾンプロファイルがあります

#.unison/sneakernet-init.prof

label = Unison profiles

root = /home/hugo/.unison
root = /media/hugo/MYDRIVE/Sync/Unison

path = sneakernet-common        # ignore rules, diff command, etc
path = sneakernet-dotfiles.prf  # profile for my dotfiles
path = sneakernet-hugobox.prf   # profile for my other stuff

次に、スクリプトを使用して、各プロファイルと順番にユニゾンを実行します

#syncronize-things.sh
unison-gtk sneakernet-init
unison-gtk sneakernet-dotfiles
unison-gtk sneakernet-hugobox
sync # Flush file system caches

このソリューションは、ユニゾンを1回ではなく3回実行する必要があるため、少し面倒ですが、ユニゾンプロファイルのいずれも同期を行わないという利点があります(これにより、ユニゾンを2回実行する必要があるという奇妙な動作が発生します。物事を機能させるための同じプロファイル)

1
hugomg