バイナリファイルにmsysgitからrsyncを使用する


22

ネットワーク上のLinuxボックスにさまざまな方法で接続された3つのウィンドウボックスがあります(1つはネットワークに対してローカルで、1つはラップトップであり、ローカルである場合とそうでない場合があり、もう1つは仕事用デスクトップです)。現在、私はgitを使用してボックス間のほとんどのアイテムを同期しています(Linuxボックスをサーバーとして使用)。これはチャンピオンのように機能します。

しかし、今では、MP3コレクション(12ギガ)を追加して、ボックス間で効率的に同期したいと考えています。最初はgitを使用できると思っていましたが、歴史的なものをすべて必要としないため、rsyncの方が良い選択のようです。私の既存の管理スクリプトはすべて(cygwinの代わりに)git bashの下で実行されるため、git bashから使用できるようにしたい(MINGW32はウィンドウのタイトルバーに表示されています)。Cygwinでダウンロードしてコピーすることはできますか、それともより良い方法がありますか?Linuxボックスは、Ubuntu Serverエディションの最新バージョンを実行しています-rsyncを正しく動作させるために、それに対して何かする必要がありますか?

おそらく必要以上に少し難しい方法でこれをやっていると思いますが、コマンドラインスキルを向上させるための練習としてこれを使用することもあります。助言がありますか?


cygwinシェルからrsyncを使用できますが、msysgitからは使用できません。rcy.exeをcygwinのbinフォルダーからmsysgitのbinフォルダーにコピーしようとしましたが、まだ見つかりません。そこにインストールするために必要な他のステップはありますか?ファイルの依存関係の1つが欠落しているというエラーを表示する代わりに、ファイルが見つからないというエラーが表示されるのは奇妙です。

回答:


25

現在(2017年9月7日)、Git for Windows SDKを実行しなくても、Git for Windows環境にrsyncサポートを手動で追加するのは非常に簡単です。

私はこの投稿に出くわしすべての選択肢を考えればそれほど簡単ではないと思いましたが、実際はそうです。必要なのは、MSYS2パッケージリポジトリからrsyncパッケージを取得し、rsync.exeファイルをに抽出することだけですC:\Program Files\Git\usr\bin。完了しました。できます。

rsync.exetar.xz形式の)rsyncパッケージからの抽出にヘルプが必要な場合は、7zipのような圧縮ユーティリティを使用するか、Git for Windows bash環境内で次のように直接実行できます。

cd /c/downloaded_location
tar -xvf rsync.pkg.tar.xz usr/bin/rsync.exe --strip-components=2

これによりrsync.exe、ダウンロードした場所にファイルが表示されます(それに応じてパッケージ名を調整します)。Windowsのアクセス許可の問題を考慮して、exeをC:\Program Files\Git\usr\binフォルダーに入れるための特定のコマンドを提供しようとはしません。エクスプローラーGUIまたは昇格したコマンドラインユーティリティを使用してコピーできます(そして、はい、プログラムファイルフォルダーに何かをコピーするには管理者レベルのアクセス許可が必要です)。

あなたもページェント認証付きのrsyncの上にsshを使用したい場合は、ssh-ページェントバイナリをされ、すでにWindows用のGitにインストールし、あなたがする必要があるすべては、あなたに小さなビットを追加している~/.bashrcか、~/.bash_profile(ファイル参照のssh-ページェントの使用セクションのためのGitをWindows wiki)。Git for Windows環境で使用するために特に変更し、不足しているソケットファイルを検出するように拡張しました。

# ssh-pageant allows use of the PuTTY authentication agent (Pageant)
SSH_PAGEANT="$(command -v ssh-pageant)"
if [ -S "$SSH_AUTH_SOCK" ]; then
  PAGEANT_SOCK=$SSH_AUTH_SOCK
else
  PAGEANT_SOCK=${TEMP:-/tmp}/.ssh-pageant-$USERNAME
fi
if [ -x "$SSH_PAGEANT" ]; then
  eval $("$SSH_PAGEANT" -qra "$PAGEANT_SOCK")
fi
unset SSH_PAGEANT
unset PAGEANT_SOCK

この方法で手動でインストールしても、他のユーティリティがどのように機能するかは話せませんが、rsyncは正常に機能するようです。リポジトリが維持され、更新され続けることを願っています-公式のMSYS2サイトでホストされているため、そうだと思います。


1
...、あなたの先生に感謝ダウンロードし、それが知られているだろう誰..作品
pscheit

問題。にはrsync.exeさまざまなバージョンのrsyncしかありません.pkg.tar.xz 形式にます。それは私がインストールできないことを除いて、OKかもしれませんapt-get install xz-utilssudo apt-get install xz-utils私はインストールしないこともできないので)sudoOR apt-getWindows用のGit Bashのに:-(ので、これをインストールすることはできませんxz-utils。これを回避する方法はありますか?私が得ることができる、新しいリンクはありますrsync.exeか何らかの方法でGit Bashにこの.xzファイルを解凍させることができますか?
SherylHohman

実際、それはパーミッションの問題のようです。私がtar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz、私が示すメッセージの束を得る:Cannot open: Permission deniedCannot mkdir: Permission deniedCannot mkdir: No such file or directoryおよびCannot open: No such file or directory様々なファイル/ディレクトリのために。たぶん、 Git Bashはxzファイルを圧縮解除する方法をすでに知っていますか?しかし、許可を得ることができませんか?を使用またはインストールできませんsudo。Git Bashへ。
シェリルホーマン

あなたのダウンロードフォルダにtar.xzファイルをダウンロードしたと仮定すると、あなたが使用してのGit Bashのからそれを解凍することができます:cd / && tar Jxvf /c/Users/$USR/Downloads/rsync-3.1.3-1-x86_64.pkg.tar.xz
hansfn

@SherylHohmanでは、パッケージファイルからexeを手動で抽出する必要があります。exeをC:\Program Files\Git\usr\binフォルダーにドロップする以外に、「インストール」は必要ありません。
nextgentech

7

私は質問が「MSYSにrsyncを使用する」ではないことを知っていますが、これに言及することは関連があると思います

「MinGWシェル」(旧称「MSYS(基本システム)」)には実際にrsyncがあります。Cygwinよりもずっと小さいので、できるだけ頻繁にそのシェル/システムを使用しています。(最近、ファイルサイズを気にするのはおそらく私だけでしょう。)

「Git for Windows」/「Git Bash」は、MinGW / MSYSに基づいており、メーリングリストで以前に言及されているため、rsyncを簡単に追加できます。

PS!MinGWシェルにrsyncがない場合は、「mingw-get install msys-rsync」を実行して追加してください。

2016年3月25日に更新:

Git for Windowsは、MSYS2を使用するようになりました。また、MSYS2は「mingw-get」ではなく「pacman」を使用してパッケージをインストールします。残念ながら、「Git for Windows」にはpacmanは含まれていません... 2つのオプションがあります。

  1. Git for Windows SDK(pacmanを含む)をインストールします。
  2. MSYS2内にGitをインストールします。

最後のオプションは私のお気に入りですが、まだ簡素化されていないため、最初のオプションの方がおそらく簡単です。うまくいけば、それは修正されます。

PS!私はMSYS2 / pacmanであまり遊んでいませんが、非常に有望です。

2019年8月7日更新:

Git for Windows(Git Bash)を使用している場合、MSYS2パッケージリポジトリからrsyncパッケージを取得することをお勧めします。 上記回答で


悲しいことに、Git Bashで:$ mingw-get bash: mingw-get: command not found
ヘンディイラワン

はい、少し悲しいです。上記の更新された答えを見てください-まだ悲しいですが、状況は改善されました。
ハンスフン

2番目のオプションを選択し、2.17GBのフォルダーになりましたが、すべてが魅力のように機能します。を使用してrsyncをインストールしましたpacman -S rsync。以前はCygWinを使用していましたが、MSYS2は素晴らしいと思います。余分なパッケージをインストールするためにGUIを実行する必要はありません。
エデンショー

この回答に記載されているバグレポートは、その後「修正不能」としてクローズされましたが、プルリクエストを作成して、Gsync for Windowsにrsyncを含めるようにしました
スコットスティーブンス

オプション1またはオプション2の実行方法に関するリンクはありますか?私はGit for Windows SDKを持っていると思います。ダンノ しかし、私がそうする、またはそれを手に入れることができると仮定すると..それから何ですか?そうでない場合、GitをMSYS2内にインストールすることの意味すらわかりません。つまり、現在のGitインストールを削除する必要があるということですか。設定や機能など、何かを失うことはありますか。いやリンクは壊れますか?
シェリルホーマン

2

私は git bashあなたは本当に平均msysgit、別名「Windows用のgitのを。」[スタートメニュー]オプションはgit bash、使用した名前を説明します。

まず、ここでオプションとしてgitを削除するのが正しいです。gitが行うことの1つうまくないバイナリファイルの処理です。そして、巨大で肥大化したリポジトリになってしまいます。さらに、変更を処理しないので、gitのオーバーヘッドを使用するのはやり過ぎだと思います。

第二に、あなたが実際に尋ねている質問は、「msysgit / Windowsからrsyncを使用できますか?」簡単な答えは、そのままではありません。 msysgitフォームと機能の点では、実際には単なるWindowsコマンドラインです。つまり、2つのオプションがあります。Windowsマシンでrsyncを有効にするサードパーティツールをダウンロードするか(Stack Overflow:Rsync for Windows)、または単にcygwinを使用します。本当に、彼らは同じ結果を持っています-だから、どれがより良く働くかを決めるのはあなた次第です。


cygwinシェルからrsyncを使用できますが、msysgitからは使用できません。rcy.exeをcygwinのbinフォルダーからmsysgitのbinフォルダーにコピーしようとしましたが、まだ見つかりません。そこにインストールする必要がある他のステップはありますか?ファイルの依存関係の1つが欠落しているというエラーを表示する代わりに、ファイルが見つからないというエラーが表示されるのは奇妙です。ありがとう、ウィル
ウィルガント

これは単に不可能です。cygwinは、Linuxライクなライブラリ、構成などを含むGNUベースの環境をセットアップ msysgitします。Windowsの実行可能ファイルをサポートするWindowsコマンドラインです。何が起こっている可能性があります、それは実行可能としてファイルを検出することさえできません。簡単に言えば、cygwinとmsysgitはリモートでも互換性がありません。
アンドリューM.

それはおそらくハックですが。コピーcygiconv-2.dllcygwin1.dllおよびrsync.exeCygwinのからあなたのmsysgitパスに。他に何もありません(特にssh.exeではありません)。問題は通常、Git SSHとCygwin / rsync SSHの非互換性です。同じバージョンを維持するようにしてください。あなたはまだ問題を抱えていますが、/cygdrive/私は解決策以外はありませんcd
ウェル


0

rsyncは単方向同期に最適です。cygwinの下でrsyncを実行できます。または、Windowsの場合はDeltacopyもあります

双方向の同期を行いたい場合は、ユニゾンをてください

クロスプラットフォームのディレクトリ同期ツールには、ほとんどのプラットフォームで実行されるsyncthingがあります。


unisonは素晴らしいですが、サーバーにインストールする必要があります-サーバーの90%がrsyncに対応しているようです。OPはrsyncを要求しました
pscheit

OPはrsyncについて尋ねましたが、OPが達成しようとしていたことは「ボックス間で効率的に同期すること」であり、ユニゾンはほとんどのリポジトリで利用可能です...
shouldbeq931

DeltaCopyはWindows 10では使用できないようです。メンテナンスはできなくなりますか?
シェリルホーマン

UnisonがWindows 10で動作するかどうかを判断するのは困難です。長い間アップデートがありませんでした。このソフトウェアがサポートするWindows OSのバージョンについての言及はありません。いくつかの問題があり、再:Windowsの10 github.com/bcpierce00/unison/...
SherylHohman

これらの日の同期でディレクトリ構造を維持するためのクロスプラットフォームのツールとして、私はsyncthingお勧めしたいsyncthing.netを .... 2011年にしかし
shouldbeq931
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.