rsync
は、リモートシェルを介して2つの場所間で、またはリモートRsyncデーモンとの間でファイルとディレクトリを同期するための高速で用途の広いコマンドラインユーティリティです。ソースと宛先の違いのみを転送することにより、高速の増分ファイル転送を提供します。
Rsyncは、データのミラーリング、増分バックアップ、システム間でのファイルのコピー、およびscp
の代わりに使用できます。 、sftp
、およびcp
コマンド。
この記事では、rsync
の使用方法について説明します 最も一般的なrsync
の実用的な例と詳細な説明を通じて オプション。
Rsyncのインストール#
rsync
ユーティリティは、ほとんどのLinuxディストリビューションとmacOSにプリインストールされています。 rsync
がない場合 システムにインストールされている場合は、ディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。
UbuntuとDebianにRsyncをインストールする#
sudo apt install rsync
CentOSおよびFedoraにRsyncをインストールする#
sudo yum install rsync
Rsyncコマンド構文#
rsync
の使用方法に入る前に コマンド、基本的な構文を確認することから始めましょう。
rsync
ユーティリティ式は次の形式を取ります:
Local to Local: rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
OPTION
-rsyncオプション。-
SRC
-ソースディレクトリ。 -
DEST
-宛先ディレクトリ。 USER
-リモートユーザー名。HOST
-リモートホスト名またはIPアドレス。
rsync
コマンドの動作を制御するいくつかのオプションを提供します。最も広く使用されているオプションは次のとおりです。
-
-a
、--archive
、アーカイブモード、-rlptgoD
と同等 。このオプションは、rsync
に通知します ディレクトリを再帰的に同期し、特別なデバイスとブロックデバイスを転送し、シンボリックリンク、変更時間、グループ、所有権、およびアクセス許可を保持します。 -
-z
、--compress
。このオプションは、rsync
を強制します データが宛先マシンに送信されるときにデータを圧縮します。このオプションは、リモートマシンへの接続が遅い場合にのみ使用してください。 -
-P
、--partial --progress
と同等 。このオプションを使用する場合、rsync
は転送中のプログレスバーを表示し、部分的に転送されたファイルを保持します。低速または不安定なネットワーク接続を介して大きなファイルを転送する場合に便利です。 --delete
。このオプションを使用する場合、rsync
宛先の場所から無関係なファイルを削除します。ミラーリングに役立ちます。-
-q
、--quiet
。エラー以外のメッセージを抑制したい場合は、このオプションを使用してください。 -
-e
。このオプションを使用すると、別のリモートシェルを選択できます。デフォルトでは、rsync
sshを使用するように構成されています。
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
について言及する価値があります 末尾にスラッシュ(/
)を付けてソースディレクトリに異なる処理を与えます )。ソースディレクトリの末尾にスラッシュがある場合、コマンドはディレクトリの内容のみを宛先ディレクトリにコピーします。末尾のスラッシュを省略した場合、rsync
ソースディレクトリを宛先ディレクトリ内にコピーします。
rsync
の使用 リモートマシンとの間でデータを同期するには#
rsync
を使用する場合 データをリモートで転送するには、ソースマシンと宛先マシンの両方にデータをインストールする必要があります。 rsync
の新しいバージョン デフォルトのリモートシェルとしてSSHを使用するように構成されています。
次の例では、ディレクトリをローカルマシンからリモートマシンに転送しています。
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
リモートマシンにパスワードなしのSSHログインを設定していない場合は、ユーザーパスワードの入力を求められます。 リモートからローカルマシンにデータを転送するには、リモートの場所をソースとして使用します。
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/
ファイルとディレクトリを除外する#
ファイルとディレクトリを除外するには、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/
/exclude-file.txt node_modules
tmp
結論#
Rsyncを使用してファイルとディレクトリをコピーおよび同期する方法を示しました。 RsyncユーザーズマニュアルページでRsyncについて学ぶことはもっとたくさんあります。
ご不明な点がございましたら、お気軽にコメントをお寄せください。