はじめに
Rsync(Remote Sync)は、ファイルとディレクトリをローカルおよびリモートの宛先に転送できる無料のコマンドラインツールです。 Rsyncは、ミラーリング、バックアップの実行、または他のサーバーへのデータの移行に使用されます。
このツールは高速で効率的で、ソースからの変更のみをコピーし、カスタマイズオプションを提供します。
このチュートリアルに従って、rsyncをで使用する方法を学びます 20のコマンド例 Linuxのほとんどのユースケースをカバーします。
前提条件
- sudoを使用するユーザー またはルート 特権
- 端末/コマンドラインへのアクセス
- リモートrsyncの例のSSHアクセス
Rsyncコマンド構文
rsync
の構文 コマンドはツールの使用法に応じて変わります。次の例では、すべてのシナリオについて説明します。最も基本的な形式のRsync構文は次のようになります:
rsync options SOURCE DESTINATION
リモートデータ転送では、ホストのアドレスを指定する必要がありますが、それについては後で詳しく説明します。
Rsyncオプション
rsyncツールには多くのオプションがあります。 rsync
と入力できます ターミナルですべての詳細を取得します。最も一般的なrsyncオプションのいくつかをリストします。
これらには以下が含まれます:
-r | データを再帰的に同期できますが、ユーザーとグループ、権限、タイムスタンプ、またはシンボリックリンクの所有権は保持されません。 |
-a | アーカイブモードは再帰モードと同じように動作しますが、すべてのファイル権限、シンボリックリンク、ファイル所有権などを保持します。 |
-z | 転送中にデータを圧縮してスペースを節約するために使用されます。 |
-b | データ同期中にバックアップを実行します。 |
-h | 出力の数値を人間が読める形式で表示します。 |
-n | ドライランを行います。実際の同期が行われる前のテストに使用されます。 |
-e | リモート転送にSSHプロトコルを使用するようにrsyncに指示します。 |
--progress | 同期中の転送の進行状況を表示します。 |
-v | 詳細出力。転送の詳細を表示します。 |
-q | rsyncコマンドとオプションの出力を抑制するために使用されます。 |
Rsyncコマンドの例
Rsyncは、特定の用途に合わせてカスタマイズできる多用途の同期ツールです。このガイドでは、アーカイブを使用します (-a
) および冗長 (-v
) 必要に応じてオプション。
以下のrsyncの例を参照して、rsyncの使用の大部分をカバーしてください。
1。単一のファイルをローカルにコピーする
あるファイルをローカルマシン上の別のディレクトリにコピーするには、ソースファイルのフルパスに続けてターゲットの宛先を入力します。
例:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/rsync/
このコマンドは、 sample.txtを転送します rsyncへのファイル ディレクトリ。宛先ディレクトリが存在しない場合は、最後にスラッシュを追加すると、この例の場合のように、rsyncがそれを作成します。
現在の作業ディレクトリからファイルをコピーする場合は、フルパスではなくファイルの名前を入力できます。
2。複数のファイルをローカルにコピーする
rsyncを使用して複数のファイルをコピーするには、ソースファイルのフルパスを追加します。
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/sample2rs.txt /home/test/Desktop/rsync
少数のファイルにはこの方法を使用する必要があります。リストが大きい場合は、 --exclude
を参照できます。 オプション。
3。ディレクトリとすべてのサブディレクトリをローカルにコピーする(ファイルとディレクトリを再帰的にコピーする)
ディレクトリとその内容をマシン上の別の場所にコピーするには、 -a
を使用します または-r
オプション。 アーカイブを使用しました オプション :
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync
上記の例は、 Linuxをコピーする方法を示しています。 rsyncへのディレクトリ ディレクトリ。 Linuxの後に末尾のスラッシュを使用しなかったことに注意してください 。したがって、rsyncツールは Linuxを作成しました rsync内のディレクトリとそのコンテンツ ディレクトリ。
4。ファイルまたはディレクトリをローカルマシンからリモートマシンにコピーする
ディレクトリをコピーするには/home / test / Desktop / Linux / home / test / Desktop / rsync リモートマシンでは、宛先のIPアドレスを指定する必要があります。
ソースディレクトリの後にIPアドレスと宛先を追加します。コロンを付けることを忘れないでください( :
)リモートホストのIPアドレスの後、宛先の前にスペースはありません。
コマンドは次のようになります:
rsync -av /home/test/Desktop/Linux 192.168.56.100:/home/test/Desktop/rsync
現在のユーザーのパスワードを入力して続行します。リモート接続に別のアカウントを使用する場合は、IPアドレスの前にそのアカウントを指定します。
rsync -a /home/test/Desktop/Linux [email protected]:/home/test/Desktop/rsync
単一のファイルをリモートホストにコピーするには、ファイルのフルパスと宛先を指定します。
例:
rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync
5。複数のファイルまたはディレクトリをローカルマシンからリモートマシンにコピーする
データをローカルにコピーするのと同様に、リモートサーバーにコピーする複数のファイルまたは複数のディレクトリパスを一覧表示します。単一のファイルまたはディレクトリをコピーする場合と同じ構文に従います。
例:
rsync -av /home/test/Desktop/Linux/ /home/test/Music 192.168.56.100:/home/test/Desktop/rsync
6。リモート転送用のrsyncプロトコルを指定する
rsyncツールは-e
で指示できます オプション ファイル転送に特定のプロトコルを使用します。 Rsync over SSHを使用してファイルをリモートで転送するには、 -e ssh
を追加します rsync
へ コマンド。
たとえば、 sample.txtを転送するには デスクトップからリモートマシンのデスクトップへ:
rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop
7。ファイルまたはディレクトリをリモートからローカルマシンにコピーする
Rsyncは、リモートサーバーからローカルマシンへのファイル転送をサポートしています。
サーバーからディレクトリをプルするには、ソースの前にそのIPアドレスを指定します。
例:
rsync -av 192.168.56.100:/home/test/Desktop/DirM /home/test/Desktop
このコマンドは、 DirMをコピーしました 192.168.56.100から/home / test / Desktopへのディレクトリ ローカルサーバー上。
リモートホストから特定のファイルをコピーするには、ローカルマシンのソースファイルと宛先のフルパスを入力します。例:
rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt /home/test/Desktop
8。複数のファイルまたはディレクトリをローカルマシンからリモートマシンにコピーする
リモートサーバーから複数のファイルまたは複数のディレクトリを転送するには、サーバーのIPアドレスの後に中括弧を使用してパスをリストします。パスはコンマで区切ります。
例:
rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} /home/test/rsync
同じことがファイルにも当てはまります。中括弧内に必要な数のファイルをリストします。
9。データ転送中のrsyncの進行状況を表示する
大規模なデータのバックアップを実行する場合は、転送の進行状況を確認することをお勧めします。
--progress
を追加します rsync
へのフラグ 転送されたデータの量、転送速度、および残り時間を表示するコマンド。
たとえば、 Dir1をバックアップするには リモートサーバーに移動して進行状況を表示するには、次のように入力します。
rsync -av --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
10。存在しないソースファイルまたはディレクトリを宛先から削除する
--delete
を使用します ソースとターゲットの同期を維持するオプション。
このオプションは、ソースにファイルまたはディレクトリがない場合、宛先にあるファイルまたはディレクトリを削除するようにrsyncに指示します。
rsync -av --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
11。転送後にソースファイルを削除する
シナリオによっては、転送後にソースファイルを削除したい場合があります。たとえば、毎週のバックアップを新しいサーバーに移動する場合があります。転送が完了すると、古いサーバー上のソースファイルは不要になります。
その場合は、 --remove-source-files
を使用してください 指定したソースファイルを削除するフラグ。
たとえば、このコマンドはバックアップファイル weekly.zipを転送します 次に、ソースから削除します:
rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/
12。 Rsyncドライラン
Rsyncは強力な同期ツールです。このツールを使用するとデータをコピーおよび削除できるため、最初にドライランを実行して、rsyncが意図したとおりに動作するかどうかをテストすることをお勧めします。
ドライランオプションは、ファイルを削除する場合に特に便利です。ドライランを実行するには、 --dry-run
を使用します オプションで、通常のrsync構文に従います。
例:
rsync -av --dry-run --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
出力は、実際にファイルを同期しているときと同じように見えます。ただし、今回のデータは同期されません。実際の転送ではなくテストが行われたことを確認するために、端末の下部に(DRY RUN)と表示されます。
13。転送の最大ファイルサイズを設定する
rsyncが転送する最大ファイルサイズを決定するには、 --max-size=add_size
を使用します 。
たとえば、500KB以下のファイルを転送するには、次のコマンドを使用します。
rsync -av --max-size=500k /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
14。転送の最小ファイルサイズを設定する
--min-size=add_size
を使用します 指定したサイズよりも小さいファイルを転送したくない場合は、rsyncを使用します。このオプションは、たとえば、小さなログファイルやサムネイルファイルをスキップする場合に便利です。
10KB未満のファイルをスキップするには、次のコマンドを実行します。
rsync -av --min-size=10k /home/test/Desktop/ 192.168.56.100:/home/test/Desktop/rsync/
15。 rsync帯域幅制限を設定する
マシン間のデータ転送中に帯域幅制限を決定する場合は、 --bwlimit=KB/s
を使用します 。
このオプションは、ネットワークスループットを低下させたくない場合に役立ちます。
最大転送速度を50KB/sに設定するには、次のように入力します。
rsync -av --bwlimit=50 --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
--progress
も使用しました --bwlimit
の使用法を示すオプション 。
16。特定のファイルタイプをコピーする
rsyncを使用して、特定のファイルタイプのみをコピーできます。これを行うには、アスタリスク( *
)を使用します )ファイル名の代わりに拡張子を追加します。
たとえば、.txtファイルのみをコピーするには、次のように入力します。
rsync -v /home/test/Documents/*.txt /home/test/Desktop/rsync/
このrsync
コマンドは、ドキュメントからすべてのテキストファイルを転送します rsyncへのディレクトリ デスクトップ上のディレクトリ。
17。ディレクトリ構造をコピーしますが、ファイルをスキップします
Rsyncでは、別の場所にあるファイルが必要ない場合にのみ、ディレクトリ構造を転送できます。
これを行うには、 -f"+ */" -f"- *"
を追加します ソースディレクトリの前。
たとえば、 Linuxの構造をコピーするには ドキュメントへのディレクトリ 、次のように入力します:
rsync -av -f"+ */" -f"- *" /home/test/Desktop/Linux /home/test/Documents
18。ディレクトリ名に日付スタンプを追加
転送に日付スタンプを付けたい場合は、ディレクトリ名に日付を簡単に追加できます。
$(date +%Y-%m-%d)
を追加します 作成する宛先ディレクトリ名に移動します。このオプションは、ディレクトリのプロパティを開かずに転送がいつ行われたかを追跡する場合に便利です。
例:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +%Y-%m-%d)
19。同じ宛先ファイルが変更された場合は、ソースファイルをコピーしないでください
2つのディレクトリを同期している場合、同じディレクトリが宛先に存在する場合、rsyncはファイルをコピーしません。
宛先でファイルを変更し、rsyncに上書きさせたくない場合があります。
変更された宛先ファイルの上書きを回避するには、 -u
を使用します オプション。
例:
rsync -avu /home/test/Desktop/Linux/ /home/test/Desktop/rsync
20。ソースファイルと宛先ファイルの違いを表示する
データの転送を開始するときは、 -i
を使用できます rsyncでフラグを立てて、送信元と宛先の間に違いがあるかどうかを確認します。
例:
rsync -avi /home/test/Desktop/Linux/ /home/test/Desktop/rsync
上記の例は、 sample2rs.txtを示しています。 宛先にファイルがありません。
出力に含まれる可能性のある文字は次のとおりです。
-
f
– ファイルの略 -
d
– 宛先ファイルが問題になっていることを示しています -
t
– タイムスタンプが変更されたことを示します -
s
– サイズが変更されたことを示します