12,964
回編集
(ページの作成:「== 概要 == librsyncライブラリは、ネットワーク効率的なファイル同期を実現するためのC言語ライブラリである。<br> Qtフレームワーク環境でもlibrsyncライブラリを使用することができ、効率的なデータ同期機能を実装する場合に役立つ。<br> <br> librsyncライブラリの主な特徴は、rsyncアルゴリズムを実装していることである。<br> このアルゴリズムにより、…」) |
|||
26行目: | 26行目: | ||
librsyncライブラリはマルチスレッド環境での使用を想定していないため、Qtのマルチスレッド機能と併用する場合は注意が必要となる。<br> | librsyncライブラリはマルチスレッド環境での使用を想定していないため、Qtのマルチスレッド機能と併用する場合は注意が必要となる。<br> | ||
必要に応じて、ミューテックスやロック等の同期プリミティブを使用して、スレッドセーフな実装を行うことが重要である。<br> | 必要に応じて、ミューテックスやロック等の同期プリミティブを使用して、スレッドセーフな実装を行うことが重要である。<br> | ||
<br><br> | |||
== libRsyncのインストール == | |||
==== libRsyncの概要 ==== | |||
librsyncは、rsyncと同様、効率的にファイルを転送する他のプログラムを構築するためのものである。<br> | |||
バックアップおよびプログラムにバイナリパッチを配布したり、ディレクトリをサーバやピア間で同期するために記述したプログラムである。<br> | |||
<br> | |||
librsyncは、ネットワーク差分を計算し適用するためのライブラリであり、多様なネットワークソフトウェアに統合できるように設計されたインターフェイスを備えている。<br> | |||
<br> | |||
librsyncは、rsyncプロトコルのコアアルゴリズムをカプセル化して、2つのファイルの差分を効率的に計算するのに役立つ。<br> | |||
rsyncアルゴリズムは、差分を計算するために2つのファイルが存在する必要が無いため、ほとんどの差分アルゴリズムとは異なる。<br> | |||
<br> | |||
その代わり、一方のファイルの各ブロックのチェックサムのセットを必要とし、それらが一緒になってそのファイルの署名を形成する。<br> | |||
もう一方のファイルのどの位置のブロックでも、チェックサムが同じであれば、同一である可能性が高く、残ったものが差分となる。<br> | |||
<br> | |||
このアルゴリズムは、同じシステム上で両方のファイルを必要とすることなく、2つのファイル間の差分を転送する。<br> | |||
<br> | |||
librsyncは、元々、HTTPのデルタ圧縮におけるrproxy実験のために作成された。<br> | |||
現在では、Dropbox、rdiff-backup、Duplicity等で使用されている。<br> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>librsyncライブラリは、rsyncワイヤプロトコルを実装していない。</u><br> | |||
<u>ファイルを転送するためにrsyncサーバと対話する場合は、rsyncにシェルアウトする必要がある。</u><br> | |||
<br> | |||
<u>librsyncライブラリは、ファイル名、パーミッション、ディレクトリ等のファイルのメタデータや構造を扱わない。</u><br> | |||
<u>このライブラリにとって、ファイルは単なるバイトのストリームである。</u><br> | |||
<br> | |||
<u>librsyncライブラリは、SSHやその他のサーバと通信するためのネットワーク関数も含まれていない。</u><br> | |||
<u>そのため、リモートファイルシステムにアクセスするには、独自のコードを提供する、または、他の仮想ファイルシステムレイヤーを使用する必要がある。</u><br> | |||
<br> | |||
<u>libRsyncライブラリのライセンスは、LGPL v2.1に準拠している。</u><br> | |||
<br> | |||
libRsyncライブラリの詳細な使用方法は、公式WebサイトまたはGithubを参照すること。<br> | |||
* 公式Webサイト : https://librsync.github.io/ | |||
<br> | |||
==== ソースコードからインストール ==== | |||
ビルドに必要な依存関係のライブラリをインストールする。<br> | |||
sudo zypper install libb2-devel | |||
<br> | |||
[https://github.com/librsync/librsync libRsyncのGitHub]からソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf librsync-<バージョン>.tar.gz | |||
cd librsync-<バージョン> | |||
<br> | |||
または、Githubからソースコードをクローンする。<br> | |||
git clone https://github.com/librsync/librsync.git | |||
cd librsync | |||
<br> | |||
libRsyncをビルドおよびインストールする。<br> | |||
mkdir build && cd build | |||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<libRsyncインストールディレクトリ> .. | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
~/.profileファイル等に、環境変数を追記する。<br> | |||
vi ~/.profile | |||
<br> | |||
# ~/.profileファイル | |||
export PATH="/<libRsyncのインストールディレクトリ>/bin:$PATH" | |||
export LD_LIBRARY_PATH="/<libRsyncのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | |||
<br> | |||
==== パッケージ管理システムからインストール ==== | |||
sudo zypper install librsync2 | |||
<br><br> | <br><br> | ||