背景
Windows 10にてパスを同期する方法は色々ありますが、Linux環境と同じようにrsyncコマンド使えるといいなぁと思いました。
Git for Windowsがすでにインストール済になっていれば楽々実現できそうだったので、git bash環境でrsyncを利用できるようにしてみました。
手順
1. Zstandard(zstd)をダウンロード
.tar.zst
形式のファイルを解凍するため、zstdをインストールします。
-
こちらからダウンロードできます: https://github.com/facebook/zstd/releases
-
zstd-〇〇〇-win64.zip
をダウンロードし、任意のパスでzipを展開します。
※〇〇〇は最新バージョンなど好みのバージョン -
zstdコマンドを使えるようにします
echo "alias zstd=\"/[パス]/zstd/zstd.exe\"" >> ~/.bashrc
source ~/.bashrc
2. rsyncをダウンロード
-
http://repo.msys2.org/msys/x86_64/ から最新バージョンの
rsync-〇〇〇–〇-x86_64.pkg.tar.zst
をダウンロード。 -
この記事を書いた当時の最新バージョンはrsync-3.2.7-2-x86_64.pkg.tar.zstですが、下記のように1でインストールしたzstdを使って解答します。
zstd -d rsync-3.2.7-2-x86_64.pkg.tar.zst
tar -xvf rsync-3.2.7-2-x86_64.pkg.tar
-
usr/bin/rsync.exe
をC:\Program Files\Git\usr\bin
にコピーします。 -
rsyncコマンドを使えるようにします
echo "alias rsync=\"/usr/bin/rsync.exe\"" >> ~/.bashrc
source ~/.bashrc
3. 必要なdllをダウンロード
この時点でrsync
を実行すると、下記のようなエラーメッセージが表示されました。
C:/Program Files/Git/usr/bin/rsync.exe: error while loading shared libraries: msys-zstd-1.dll: cannot open shared object file: No such file or directory
いくつかのdllが足りないようなのでダウンロードしてGit for Windowsのusr/binに入れます。
-
http://repo.msys2.org/msys/x86_64/ から最新バージョンをダウンロードします。
この記事書いた当時、以下のバージョンが最新でした。
libzstd-1.5.2-2-x86_64.pkg.tar.zst
libxxhash-0.8.1-1-x86_64.pkg.tar.zst
libopenssl-3.0.7-2-x86_64.pkg.tar.zst
-
zstdコマンドで解答し、必要になる各dllを
C:\Program Files\Git\usr\bin
に入れます。
zstd -d libzstd-1.5.2-2-x86_64.pkg.tar.zst
tar -xvf libzstd-1.5.2-2-x86_64.pkg.tar
mv usr/bin/msys-zstd-1.dll C:\Program Files\Git\usr\bin
zstd -d libxxhash-0.8.1-1-x86_64.pkg.tar.zst
tar -xvf libxxhash-0.8.1-1-x86_64.pkg.tar
mv usr/bin/msys-xxhash-0.dll C:\Program Files\Git\usr\bin
zstd -d libopenssl-3.0.7-2-x86_64.pkg.tar.zst
tar -xvf libopenssl-3.0.7-2-x86_64.pkg.tar
mv usr/bin/msys-crypto-3.dll C:\Program Files\Git\usr\bin