📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の13版が非表示)
9行目: 9行目:
<br>
<br>
下表に、rsyncコマンドの主なオプションを示す。<br>
下表に、rsyncコマンドの主なオプションを示す。<br>
<br>
特に、<code>--progress</code>オプションを付加することが便利である。<br>
また、<code>-h</code>オプションを付加することにより、進捗状況の出力においてユーザが読みやすくすることができる。<br>
<center>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
{| class="wikitable" | style="background-color:#fefefe;"
125行目: 128行目:
|-
|-
| -t<br>--times || タイムスタンプを保持する。
| -t<br>--times || タイムスタンプを保持する。
|}
</center>
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ ネットワーク転送関係のオプション<br>(ローカル転送時も使用可能)
|-
! style="background-color:#66CCFF;" | オプション
! style="background-color:#66CCFF;" | 説明
|-
| -T<br>--temp-dir=<ディレクトリのパス> || 指定したディレクトリに一時ディレクトリを作成する。
|-
| -z<br>--compress || 転送中のデータを圧縮する。
|-
| --compress-level=<レベル> || データの圧縮レベルを指定する。
|-
| --skip-compress=<リストファイル> || リストファイルに書かれたファイルは圧縮しない。
|-
| --port=<ポート番号> || ポート番号を指定する。
|-
| --sockopts=<TCPオプション> || TCPオプションを指定する。
|-
| -8<br>--8-bit-output || 8ビット以上の文字をエスケープしない。
|-
| -h<br>--human-readable || 数字を読みやすい単位で表示する。
|-
| --progress || 転送の進行状況を表示する。
|-
| -P || <code>--partial --progress</code>と同様である。
|-
| --partial || 転送を中断したファイルを保持する。
|-
| --partial-dir=<ディレクトリのパス> || 転送を中断したファイルを保存するディレクトリ。
|-
| -4<br>--ipv4 || IPv4を使用する。
|-
| -6<br>--ipv6 || IPv6を使用する。
|-
| --timeout=<秒数> || I/Oタイムアウトの秒数。
|-
| --iconv=<変換方法> || ファイル名の変換方法を指定する。<br>(転送元がmacOSの場合は、<code>--iconv=UTF-8-MAC,UTF-8</code>のように指定する)
|}
|}
</center>
</center>
<br><br>
<br><br>


== rsyncのインストール ==
== ディレクトリの同期 ==
ディレクトリを同期する場合は、<code>rsync -avz <同期元のディレクトリのパス>/ <同期先のディレクトリのパス>/</code>のように指定する。<br>
同期先のディレクトリが存在しない場合は、自動的に作成される。<br>
<br>
<code>-a</code>オプションはアーカイブを意味するオプションで、サブディレクトリが存在する場合は、<br>
<u>"サブディレクトリも処理する(再帰処理)"、"パーミッションやファイルのタイムスタンプを保持する"、"シンボリックリンクをシンボリックリンクのままコピーする"</u>等の動作となる。<br>
また、ファイルのサイズとタイムスタンプが同じ場合は、更新されていないファイルとみなし、コピーから除外される。<br>
<br>
チェックサムで比較する場合は、<code>-c</code>オプションを併用して、<code>rsync -acvz ~</code>と指定する。<br>
<br>
<code>-v</code>オプションは、動作中の内容を表示するオプションである。<br>
<code>-z</code>オプションは、転送データを圧縮するオプションである。<br>
# rsyncコマンドの実行例
rsync -avz <同期元のディレクトリのパス>/ <同期先のディレクトリのパス>/
<br>
ディレクトリ指定時の注意点を、以下に示す。<br>
同期元のディレクトリ末尾の<code>/</code>を省略した場合、同期先のディレクトリの中に同期元と同じ名前のディレクトリが作成される。<br>
<br>
例えば、<code>rsync -avz mydata/ backup-mydata/</code>コマンドを実行する場合、mydataディレクトリ内のファイルやディレクトリがbackup-mydataディレクトリ内にコピーされる。<br>
<br>
これに対して、<code>rsync -avz mydata backup-mydata/</code>コマンドを実行する場合、backup-mydata内にmydataディレクトリが作成されることになる。<br>
なお、同期先ディレクトリの末尾の<code>/</code>の有無はどちらでもよい。<br>
<br><br>
 
== 異なるホスト間でディレクトリを同期する ==
異なるホスト間でディレクトリを同期する場合、<br>
同期元や同期先を<code><IPアドレスまたはホスト名>:<ディレクトリのパス></code>または<code><ユーザ名>@<IPアドレスまたはホスト名>:<ディレクトリのパス></code>と指定する。<br>
<br>
ネットワークの回線速度が遅い環境で大きなファイルを転送する場合、<code>-z</code>オプションで転送データを圧縮するとよい。<br>
<br>
また、大きなファイルを転送している時にエラーで失敗する場合、<code>--partial</code>オプションを指定することにより、rsyncコマンドの再実行時に"続き"から再開することができる。<br>
この時、<code>--partial-dir=<ディレクトリのパス></code>オプションでコピー中のファイルを保存する場所を指定することもできる。<br>
# コマンドの実行例 (異なるホスト間でディレクトリを同期する)
rsync -avz --delete --rsh="ssh" <同期先PCのディレクトリのパス> <同期元PCのユーザ名>@<同期元PCのIPアドレスまたはホスト名>:<同期元PCのディレクトリのパス>
rsync -avz --delete --rsh="ssh" <同期元PCのユーザ名>@<同期元PCのIPアドレスまたはホスト名>:<同期元PCのディレクトリのパス> <同期先PCのディレクトリのパス>
rsync -avz --delete --rsh="ssh -p <ポート番号> -i <暗号鍵ファイルのパス>" \
<同期先PCのディレクトリのパス> <同期元PCのユーザ名>@<同期元PCのIPアドレスまたはホスト名>:<同期元PCのディレクトリのパス>
rsync -avz --delete --rsh="ssh -p <ポート番号> -i <暗号鍵ファイルのパス>" \
<同期元PCのユーザ名>@<同期元PCのIPアドレスまたはホスト名>:<同期元PCのディレクトリのパス> <同期先PCのディレクトリのパス>
<br><br>
 
== パーミッションを保持せずに同期する ==
パーミッションを保持せずに同期する場合は、-aオプションを使用せずに、必要なオプションを個別に指定する。<br>
rsync -rltvz --delete <同期元のディレクトリ> <同期先のディレクトリ>
<br>
* -rオプション
*: 再帰的にディレクトリを同期する。
* -lオプション
*: シンボリックリンクをリンクとして同期する。
* -t
*: タイムスタンプを保持する。
* -vオプション
*: 詳細な出力を表示する。
* -z
*: 転送時に圧縮する。
<br>
<code>-a</code>オプションには<code>-p</code>オプション (パーミッションの保持) が含まれているため、これを除外することでパーミッションを保持せずに同期できる。<br>
<br>
なお、同期先のファイルには、実行ユーザのumaskに基づいた新しいパーミッションが設定される。<br>
<br><br>
 
== Rsyncのインストール ==
==== ソースコードからインストール ====
==== ソースコードからインストール ====
ビルドに必要な依存関係のライブラリをインストールする。<br>
Rsyncのビルドに必要なライブラリをインストールする。<br>
# パッケージ管理システムからビルドに必要な全てのライブラリをインストールする場合
sudo zypper install libopenssl-devel libacl-devel xxhash-devel liblz4-devel libzstd-devel python3-CommonMark python3-cmarkgfm
# パッケージ管理システムとpipコマンドからビルドに必要なライブラリをインストールする場合
  sudo zypper install libopenssl-devel libacl-devel xxhash-devel liblz4-devel libzstd-devel
  sudo zypper install libopenssl-devel libacl-devel xxhash-devel liblz4-devel libzstd-devel
  python3 -mpip install --user commonmark
  python3 -mpip install --user commonmark
# または
sudo zypper install libopenssl-devel libacl-devel xxhash-devel liblz4-devel libzstd-devel python3-CommonMark
<br>
<br>
rsyncのGitHubからソースコードをダウンロードする。<br>
[https://rsync.samba.org Rsyncの公式Webサイト]からソースコードをダウンロードする。<br>
  wget https://github.com/WayneD/rsync/archive/refs/tags/v<x.x.x>.tar.gz  # Release版
ダウンロードしたファイルを解凍する。<br>
  tar xf rsync.tar.gz
  tar xf rsync-<バージョン>.tar.gz
cd rsync-<バージョン>
<br>
または、[https://github.com/WayneD/rsync/ RsyncのGitHub]からソースコードをダウンロードすることもできる。<br>
  git clone https://github.com/WayneD/rsync.git
  cd rsync
  cd rsync
<br>
Rsyncをビルドおよびインストールする。<br>
mkdir build && cd build
   
   
  # または
  ../configure --prefix=<Rsyncのインストールディレクトリ>
make -j $(nproc)
make install
<br>
Rsyncを動作させるために必要なライブラリをインストールする。<br>
sudo zypper install openssl xxhash libxxhash0 lz4
<br><br>
 
== Grsyncのインストール ==
==== Grsyncの概要 ====
Grsyncは、RsyncのGUI版(GTKライブラリを使用)であり、ディレクトリ、ファイルの同期とバックアップを行うために使用する。<br>
ローカルディレクトリの同期に効果的に使用でき、リモートターゲットもサポートしている。<br>
(ただし、リモートディレクトリのブラウジングはサポートしていない)<br>
<br>
Grsyncの使用例として、リムーバブルデバイスとの音楽コレクションの同期、ネットワークドライブへの個人ファイルのバックアップ、パーティションの別へのレプリケーション、ファイルのミラーリング等が挙げられる。<br>
<br>
==== ソースコードからインストール ====
Grsyncのビルドに必要な依存関係のライブラリをインストールする。<br>
sudo zypper install intltool glib2-devel gtk3-devel wayland-devel wayland-protocols-devel
<br>
[http://www.opbyte.it/grsync/download.html Grsyncの公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
tar xf grsync-<バージョン>.tar.gz
cd grsync-<バージョン>
<br>
Grsyncをビルドおよびインストールする。<br>
mkdir build && cd build
   
   
  git clone https://github.com/WayneD/rsync.git rsync                    # Debug版
../configure --prefix=<Grsyncのインストールディレクトリ>
  cd rsync
make -j $(nproc)
make install
<br>
==== パッケージ管理システムからインストール ====
sudo zypper install grsync
<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>
==== ソースコードからインストール ====
ビルドに必要な依存関係のライブラリをインストールする。<br>
sudo zypper install libb2-devel
<br>
[https://github.com/librsync/librsync/releases 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>
<br>
rsyncをビルドおよびインストールする。<br>
libRsyncをビルドおよびインストールする。<br>
  mkdir build && cd build
  mkdir build && cd build
   
   
  ../configure --prefix=$HOME/InstallSoftware/rsync --disable-lz4 --disable-zstd --disable-md2man
  cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<libRsyncインストールディレクトリ> ..
  make -j $(nproc)
  make -j $(nproc)
  make install
  make install
<br>
<br>
rsyncを動作させるために必要なライブラリをインストールする。<br>
~/.profileファイル等に、環境変数を追記する。<br>
  sudo zypper install openssl libxxhash
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>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry Pi]][[カテゴリ:PinePhone]]