Linuxコマンド - rsync

提供:MochiuWiki : SUSE, EC, PCB
2021年10月30日 (土) 09:57時点におけるWiki (トーク | 投稿記録)による版 (→‎オプション)
ナビゲーションに移動 検索に移動

概要

rsyncコマンドは、リモート環境とファイルやディレクトリを同期(sync)するコマンドである。(ローカル環境のみでも使用できる。)
変更があった分だけ更新する機能があるため、特にディレクトリ単位のバックアップに便利である。


オプション

rsyncコマンドの書式を、以下に示す。

rsync <オプション> <同期元のディレクトリのパス> <同期先のディレクトリのパス>


下表に、rsyncコマンドの主なオプションを示す。

通常のオプション
オプション 説明
-a
--archive
アーカイブモード(-rlptgoD -no-H -no-A -no-X相当)
-c
--checksum
更新日とサイズではなく、チェックサムで変更の有無をチェックする。
--daemon デーモンとして動作する。(--daemon --helpでデーモン時に使用できるオプションが確認できる)
-I
--ignore-times
サイズとタイムスタンプが同じファイルも処理する。
--list-only コピーする代わりにファイルのリストを作成する。
-n
--dry-run
試験モード。
実際には動作せず、動作内容だけ表示する。(-v--statsを一緒に指定する)
--no-<オプション名> 指定したオプションを無効にする。(-Hを無効にする場合は、--no-Hのように指定する)
-q
--quiet
動作中のメッセージを抑制する。
--stats ファイル数や転送サイズを表示する。
--size-only 同じサイズのファイルは処理しない。
-v
--verbose
動作内容を表示する。


-aオプション使用時に有効になるオプション
オプション 説明
-r
--recursive
ディレクトリを再帰的に処理する。
-l
--links
シンボリックリンクをシンボリックリンクのままコピーする。
-p
--perms
パーミッションを保持する。
-t
--times
タイムスタンプを保持する。
-g
--group
所有グループをそのまま保持する。
-o
--owner
所有者をそのまま保持する。(自分以外の所有者を保持するにはroot権限が必要)
-D デバイスファイルや特殊ファイルを保持する。(--devices --specials相当)
--devices デバイスファイルを保持する。(root権限が必要)
--specials 特殊ファイルを保持する。


-aオプション使用時に無効になるオプション
オプション 説明
-H
--hard-links
ハードリンクを保持する。
-l
--links
ACL(アクセス制御リスト)を保持する。(-pも同時に指定した扱いになる)
-X
--xattrs
拡張属性を保持する。


シンボリックリンク関係のオプション
オプション 説明
--copy-unsafe-links リンク先が自分の配下にないものだけを対象にする。
-k
--copy-dirlinks
ディレクトリへのリンクの場合もリンク先を転送する。
-K
--keep-dirlinks
ディレクトリへのリンクをたどらない。
-l
--links
シンボリックリンクをシンボリックリンクのままコピーする。
-L
--copy-links
シンボリックリンクを対象にする。
--safe-links リンク先が自分の配下にあるものだけを対象にする。


パーミッション関係のオプション
オプション 説明
--chmod=CHMOD パーミッションを指定する。
-E
--executability
実行可能属性を保持する。
-g
--group
所有グループをそのまま保持する。
--numeric-ids ユーザIDとグループIDを保持する。(転送先の名前に対応させない)
-O
--omit-dir-times
--timesオプション指定時、ディレクトリは除外する。
-o
--owner
所有者をそのまま保持する。(自分以外の所有者を保持するにはroot権限が必要)
-p
--perms
パーミッションを保持する。
-t
--times
タイムスタンプを保持する。


ネットワーク転送関係のオプション
(ローカル転送時も使用可能)
オプション 説明
-T
--temp-dir=<ディレクトリのパス>
指定したディレクトリに一時ディレクトリを作成する。
-z
--compress
転送中のデータを圧縮する。
--compress-level=<レベル> データの圧縮レベルを指定する。
--skip-compress=<リストファイル> リストファイルに書かれたファイルは圧縮しない。
--port=<ポート番号> ポート番号を指定する。
--sockopts=<TCPオプション> TCPオプションを指定する。
-8
--8-bit-output
8ビット以上の文字をエスケープしない。
-h
--human-readable
数字を読みやすい単位で表示する。
--progress 転送の進行状況を表示する。
-P --partial --progressと同様である。
--partial 転送を中断したファイルを保持する。
--partial-dir=<ディレクトリのパス> 転送を中断したファイルを保存するディレクトリ。
-4
--ipv4
IPv4を使用する。
-6
--ipv6
IPv6を使用する。
--timeout=<秒数> I/Oタイムアウトの秒数。
--iconv=<変換方法> ファイル名の変換方法を指定する。
(転送元がmacOSの場合は、--iconv=UTF-8-MAC,UTF-8のように指定する)



rsyncのインストール

ソースコードからインストール

ビルドに必要な依存関係のライブラリをインストールする。

sudo zypper install libopenssl-devel libacl-devel xxhash-devel liblz4-devel libzstd-devel
python3 -mpip install --user commonmark

# または

sudo zypper install libopenssl-devel libacl-devel xxhash-devel liblz4-devel libzstd-devel python3-CommonMark


rsyncのGitHubからソースコードをダウンロードする。

wget https://github.com/WayneD/rsync/archive/refs/tags/v<x.x.x>.tar.gz  # Release版
tar xf rsync.tar.gz
cd rsync

# または

git clone https://github.com/WayneD/rsync.git rsync                     # Debug版
cd rsync


rsyncをビルドおよびインストールする。

mkdir build && cd build

../configure --prefix=$HOME/InstallSoftware/rsync --disable-lz4 --disable-zstd --disable-md2man
make -j $(nproc)
make install


rsyncを動作させるために必要なライブラリをインストールする。

 sudo zypper install openssl libxxhash