rsync は、リモートシェル上で 2 つの場所間のファイルおよびディレクトリを同期する、またはリモート Rsync デーモンから/への高速で多用途のコマンドライン ユーティリティです。
Rsync は、データのミラーリング、増分バックアップ、システム間のファイルコピー、および scp、sftp、cp コマンドの代わりとして使用することが可能です。
この記事では、最も一般的な rsync オプションの実用例と詳細な説明を通して、rsync の使用方法を説明します。
Rsyncのインストール #
rsync ユーティリティはほとんどの Linux ディストリビューションと macOS にプレインストールされています。 システムに rsync がインストールされていない場合、ディストリビューションのパッケージ・マネージャーを使用して簡単にインストールできます。
Install Rsync on Ubuntu and Debian #
sudo apt install rsync
Install Rsync on CentOS and Fedora #
sudo yum install rsync
Rsync Command Syntax #
rsync コマンドの使用方法に入る前に、基本構文を確認することから始めましょう。
rsync ユーティリティ式は次の形式をとります:
Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC...
-
OPTION– rsync オプション. -
SRC– ソース ディレクトリ. -
DEST– 出力先ディレクトリ. – ソース ディレクトリ. -
USER– リモートユーザー名. -
HOST– リモートホスト名または IP アドレス.
rsync は、コマンドの動作を制御する多数のオプションを提供します。 最も広く使われているオプションは、
-
-a,--archive, archive mode, equivalent to-rlptgoDです。 このオプションは、ディレクトリの再帰的同期、特殊デバイスとブロックデバイスの転送、シンボリックリンク、変更時間、グループ、所有権、およびパーミッションの保持をrsyncに指示します。 -
-z,--compress. このオプションは、rsyncが宛先マシンに送信する際にデータを圧縮するよう強制する。 このオプションは、リモートマシンへの接続が遅い場合のみ使用してください。 -
-P,--partial --progressと同等。 このオプションを使用すると、rsyncは転送中にプログレスバーを表示し、部分的に転送されたファイルを保持します。 低速または不安定なネットワーク接続で大きなファイルを転送するときに便利です。 -
--delete. このオプションを使用すると、rsyncは転送先から余計なファイルを削除します。 ミラーリングに有効です。 -
-q,--quiet. エラーメッセージ以外を抑制したい場合にこのオプションを使用します。 -
-e. このオプションは、異なるリモートシェルを選択することができます。 デフォルトでは、rsyncは ssh を使用するように設定されています。
Basic Rsync Usage #
rsync の最も基本的な使用例は、単一のファイルをあるローカルロケーションから別のロケーションへコピーすることです。 以下はその例です。
rsync -a /opt/filename.zip /tmp/
コマンド実行ユーザーは元の場所に読み取り権限、宛先に書き込み権限が必要です。
宛先でファイル名を指定すると現在の名前でファイルがコピーされます。
rsync -a /opt/filename.zip /tmp/newfilename.zip
ファイルを別の名前で保存したい場合は、保存先で新しい名前を指定します。rsyncの本当の威力は、ディレクトリを同期させるときに発揮されます。 以下の例では、Web サイト ファイルのローカル バックアップを作成する方法を示しています:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
保存先ディレクトリが存在しない場合、rsync はそれを作成します。
特筆すべきは、rsync は、末尾のスラッシュ (/) を持つソース ディレクトリに対して異なる処理を行うことです。 ソースディレクトリに末尾のスラッシュがある場合、コマンドはディレクトリの内容のみを宛先ディレクトリにコピーする。
Using rsync to Sync Data from/to a remote Machine #
rsync を使用してリモートでデータを転送する場合、転送元と転送先の両方のマシンにインストールされている必要があります。
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
リモートからローカルマシンにデータを転送するには、リモートの場所をソースとして使用します。
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
リモートホストの SSH がデフォルトの 22 以外のポートでリスンしている場合、-e オプションでそのポートを指定します。
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
大量のデータを転送する場合、スクリーンセッション内で rsync コマンドを実行するか、-P オプションを使用することをお勧めします:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Exclude Files and Directories #
ファイルやディレクトリを除外するには2つのオプションがあります。 最初のオプションは、--exclude引数を使用し、コマンドラインで除外したいファイルとディレクトリを指定します。
ファイルまたはディレクトリを除外する場合、ソースロケーションからの相対パスを使用する必要があります。
次の例では、node_modules および tmp ディレクトリを除外する方法を示しています:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
2番目の方法は、--exclude-from オプションを使用して、除外したいファイルおよびディレクトリをファイルに指定する方法です。
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modulestmp
結論 #
Rsync を使用してファイルやディレクトリのコピーと同期を行う方法について説明しました。 Rsync については、Rsync ユーザーマニュアル ページでさらに多くのことを学ぶことができます。