「Rsync」コマンドのメリット
- 変更されているか、宛先に存在しないファイルのみをソースの場所から宛先にコピーするため、他のツールよりも高速です。
- 不完全転送にも対応しています。
- 送信中にデータが圧縮されるため、必要な帯域幅が少なくなります。
- 重要度の低いデータは暗号化せずに送信できるため、送信のオーバーヘッドが減少します。
構文
「rsync」コマンドの構文は次のとおりです。
rsync [オプション] 送信元宛先ここで、送信元パスと宛先パスはローカルまたはリモートにすることができます。このコマンドでは、さまざまな目的に応じてさまざまなタイプのオプションを使用できます。
「Rsync」コマンドの便利なオプション
「rsync」コマンドの一般的に使用されるオプションのいくつかを以下で説明します。
オプション | 目的 |
---|---|
-と | 送信中にデータを圧縮するために使用されます。 |
-r | これは、ファイル権限を保持せずにデータを再帰的に同期するために使用されます。 |
-a | すべてのファイル権限を維持することにより、データを再帰的に同期するために使用されます。 |
-b | 送信中にデータのバックアップを保持するために使用されます。 |
-の | 出力を詳細形式で表示するために使用されます。 |
-p | 転送の進行状況を表示するために使用されます。 |
-n | ファイルやフォルダーを転送する前に、同期が機能するかどうかを確認するために使用されます。 |
15 個の「Rsync」例のリスト
- 単一のファイルとフォルダーをローカルに転送する
- 複数のファイルとフォルダーをローカルに転送する
- 単一のファイルとフォルダーをリモートで転送する
- 複数のファイルとフォルダーをリモートで転送する
- 転送の進行状況を表示する
- 転送中にデータを圧縮する
- 帯域制限のある転送
- ファイルとフォルダーを再帰的に転送する
- 最小サイズ制限で転送する
- 最大サイズ制限のある転送
- 特定の種類のファイルを転送する
- ソースファイルと宛先ファイルの違いを表示する
- 転送中にファイルを含めるか除外する
- ドライモードでデータを同期する
- 転送後にソースファイルとフォルダーを削除する
単一のファイルとフォルダーをローカルに転送する
「ls」コマンドを実行すると、現在の場所にあるファイルとフォルダーの一覧が表示されます。次に、「rsync」コマンドを実行して、「employees.txt」ファイルを「employees_copy.txt」ファイルにローカルに転送します。再度lsコマンドを実行し、ファイルが正しく転送されたか確認してください。
$ls
$ rsync 従業員.txt 従業員_コピー.txt
$ls
次の出力は、「employee.txt」ファイルが正常に転送されたことを示しています。
temp フォルダーの内容を tempdir フォルダーに転送する必要があり、両方のフォルダーに「courses.txt」ファイルが存在するとします。 「ls temp」コマンドを実行して、temp フォルダーの内容を確認します。次に、「cat temp/courses.txt」コマンドを実行して、このファイルの内容を確認します。次に、「ls tempdir」コマンドを実行して、tempdirフォルダーの内容を確認します。次に、「cat tempdir/courses.txt」コマンドを実行して、このファイルの内容を確認します。
$ls 温度
$ cat temp/courses.txt
$ lstempdir
$ cat tempdir/courses.txt
出力には、temp フォルダーと tempdir フォルダーの「courses.txt」ファイルの内容がわずかに異なり、temp フォルダーの「courses.txt」ファイルには tempdir フォルダーの「courses.txt」ファイルよりも多くのデータが含まれていることが示されています。 。
次のコマンドを実行して、temp フォルダーの内容を tempdir フォルダーに転送し、tempdir フォルダーの「courses.txt」ファイルの内容をチェックして、ファイルが正しく更新されているかどうかを確認します。
$ rsync -a temp/tempdir/$ lstempdir
$ cat tempdir/courses.txt
次の出力は、temp フォルダーの内容が tempdir フォルダーに適切に転送され、tempdir フォルダーの「courses.txt」ファイルの内容が適切に更新されたことを示しています。
複数のファイルとフォルダーをローカルに転送する
「rsync」コマンドを使用すると、複数のファイルやフォルダーをローカルに転送できます。以下のコマンドを実行して、「ping1.bash」ファイルと「ping2.bash」ファイルを tempdir フォルダーに転送し、転送後の tempdir フォルダーの内容を確認します。 -v オプションを「rsync」コマンドで使用すると、出力が詳細形式で表示されます。
$ rsync -v ping1.bash ping2.bash tempdir/$ lstempdir
次の出力は、複数のファイルが tempdir フォルダーに適切に転送されたことを示しています。
次のコマンドを実行して、temp、tempdir、test フォルダーの内容を確認し、test フォルダーと tempdir フォルダーの内容を temp フォルダーに転送します。
$ls 温度$ lstempdir
$ ls テスト
$ rsync -av テスト/tempdir/temp/
$ls 温度
出力には、test フォルダーと tempdir フォルダーの内容が temp フォルダーに正常に転送されたことが示されています。 「customers.csv」、「ping1.bash」、および「ping2.bash」ファイルが新しいファイルとして一時フォルダーに追加されます。
単一のファイルとフォルダーをリモートで転送する
ファイルとフォルダーをリモートで転送するには、リモートの場所に SSH サーバーをインストールして構成する必要があります。これで確認できます チュートリアル SSHサーバーを設定します。
次のコマンドを実行して、現在の場所の「courses.txt」ファイルのサイズを確認します。
ls -la コース.txt出力には、「courses.txt」ファイルのサイズが 65 バイトであることが示されています。
次のコマンドを実行して、「courses.txt」を /ホーム/ubuntu/コース/ リモートの場所のフォルダー、ubuntu@192.168.0.101。ファイルを転送する前に、リモート マシンの root パスワードを指定する必要があります。
rsync -v course.txt ubuntu@192.168.0.101:/home/ubuntu/courses/次の出力は、「courses.txt」ファイルがリモート マシンに適切に転送され、ファイル サイズが 65 バイトであることを示しています。
次のコマンドを実行して、一時フォルダーを /ホーム/ubuntu/コース/ リモートの場所のフォルダー、ubuntu@192.168.0.101。前のコマンドと同様に、ファイルを転送する前に、リモート マシンの root パスワードを指定する必要があります。
rsync -av temp/ ubuntu@192.168.0.101:/home/ubuntu/courses/次の出力は、一時フォルダーの内容がリモート マシンに適切に転送されたことを示しています。
複数のファイルとフォルダーをリモートで転送する
次の「rsync」コマンドは、「customers.csv」ファイルと「Department.json」ファイルを /ホーム/Ubuntu/ファイル/ リモートの場所のフォルダー、ubuntu@192.168.0.101。
rsync -av customer.csv 部門.json ubuntu@192.168.0.101:/home/ubuntu/files/次の出力は、複数のファイルがリモートの場所に正常に転送されたことを示しています。
次の「rsync」コマンドは、temp フォルダーと test フォルダーの内容と「Department.json」ファイルを /ホーム/Ubuntu/ファイル/ リモートの場所のフォルダー、ubuntu@192.168.0.101。
rsync -av temp/test/デパートメント.json ubuntu@192.168.0.101:/home/ubuntu/files/次の出力は、複数のフォルダーのコンテンツがリモートの場所に正常に転送されたことを示しています。
転送の進行状況を表示する
–progress オプションを指定して「rsync」コマンドを実行し、tempdir フォルダーの内容を進行状況情報とともに temp_copy フォルダーに転送します。
rsync -a tempdir/ temp_copy --progress次の出力は、temp_copy ディレクトリがローカルに作成され、tempdir フォルダーの内容が temp_copy フォルダーに正常に転送されたことを示しています。
転送中にデータを圧縮する
–z オプションを指定して次の「rsync」コマンドを実行し、tempdir ディレクトリを圧縮してローカルのテスト ディレクトリに転送します。
rsync -za tempdir/test/次の出力は、圧縮ディレクトリがローカルに正常に転送されたことを示しています。
帯域制限のある転送
–bwlimit オプションに値 100 を指定して次の「rsync」コマンドを実行し、/etc/passwd ファイルをローカルの一時フォルダーに転送します。
rsync -v --bwlimit=100 etc/passwd temp/次の出力は、passwd ファイルが正常に転送されたことを示しています。
ファイルとフォルダーを再帰的に転送する
–rv オプションを指定して次の「rsync」コマンドを実行して、テスト フォルダーをローカルの test_bak フォルダーに転送します。
rsync -rv テスト/test_bak/次の出力は、test フォルダーが test_bak フォルダーに正常に転送されたことを示しています。
最小サイズ制限で転送する
「rsync」コマンドを使用したファイルとフォルダーの転送は、-min-size オプションを使用して、ファイルとフォルダーの転送の最小サイズ制限を設定することで制限できます。次の「ls -la tempdir」コマンドを実行して、このフォルダー内の各ファイルとフォルダーのサイズを確認します。次に、「rsync」コマンドを実行して、tempdir フォルダーの内容を最小サイズ制限で tempdir_bak フォルダーに転送します。
ls -la tempdirrsync -av --min-size='245B' tempdir/tempdir_bak
次の出力は、最小サイズに一致する 2 つのファイルが tempdir フォルダーに存在することを示しています。 「ping1.bash」(248バイト)と「test.txt」(34504バイト)です。これらのファイルは tempdir_bak フォルダーに転送され、tempdir フォルダーの他のファイルは省略されます。
最大サイズ制限のある転送
「rsync」コマンドを使用したファイルとフォルダーの転送は、-max-size オプションを使用して、転送するファイルとフォルダーの最大サイズ制限を設定することで制限できます。次の「ls -la temp」コマンドを実行して、このフォルダー内の各ファイルとフォルダーのサイズを確認します。次に、「rsync」コマンドを実行して、temp フォルダーの内容を最大サイズ制限付きで temp_bak フォルダーに転送します。
ls -la 温度rsync --max-size='250B' temp/temp_bak/
次の出力は、最大サイズ制限に一致する 4 つのファイルが一時フォルダーに存在することを示しています。これらは、「courses.txt」(65 バイト)、「employees.csv」(361 バイト)、「ping1.bash」(248 バイト)、「ping2.bash」(244 バイト)です。これらのファイルは temp_bak フォルダーに転送され、temp フォルダー内の他のファイルは省略されます。
特定の種類のファイルを転送する
転送するファイルの種類は、「rsync」コマンドでファイルの拡張子を指定することで設定できます。次の「rsync」コマンドを実行して、temp フォルダーのすべてのテキスト ファイルを mydir フォルダーに転送します。ここでは、テキスト ファイルの拡張子を「*.txt」で表します。
rsync -v temp/*.txt mydir/次の出力は、2 つのテキスト ファイル「courses.txt」と「test.txt」が mydir フォルダーに転送され、temp フォルダーの他のファイルが省略されていることを示しています。
ソースファイルと宛先ファイルの違いを表示する
ファイルまたはフォルダーがある場所から別の場所にローカルまたはリモートで転送される場合、両方の場所に同じファイルまたはフォルダーが含まれる可能性があります。送信中の送信元と宛先の違いは、「rsync」コマンドの -i オプションを使用して調べることができます。転送前に、次の「cat」コマンドを実行して、転送元ファイルと転送先ファイルの内容を確認します。ここでは、「courses.txt」ファイルをtempフォルダに転送します。
猫コース.txt猫の温度/コース.txt
rsync -avi course.txt temp/
次の出力は、ソースと宛先の「courses.txt」ファイルがわずかに異なることを示しています。 「rsync」コマンドの出力には、ファイル間の違いが示されています。
ドライモードでデータを同期する
実際に転送する前に、「rsync」コマンドによってどのファイルやフォルダが転送されるかを知りたい場合は、-dry-run オプションまたは -n オプションを指定して「rsync」コマンドを実行することをお勧めします。このオプションを指定して「rsync」コマンドを実行すると、どのファイルまたはフォルダーがコピー元フォルダーからコピー先フォルダーにコピーされるかが確認されますが、コピー先フォルダーは変更されません。 「ls –la plan.json」ファイルを実行して、ファイルのサイズを確認します。次に、-dry-run モードで「rsync」コマンドを実行し、「Department.json」が一時フォルダーに転送されたことを確認します。
ls -la 部門.jsonrsync -v --dry-run 部門.json temp/
次の出力は、「Department.json」ファイルのサイズが 1172 バイトであることを示しています。 –dry-run オプションを指定して「rsync」コマンドを実行すると、ファイル サイズは 1172 バイトと表示されます。
転送中にファイルを含めるか除外する
–include および –exclude オプションを使用して、ソースの場所から宛先の場所に転送するときにファイルの種類をフィルタリングできます。 「optionsinclude」オプションは、ソースから宛先に転送されるファイルの拡張子を定義するために使用されます。 –exclude オプションは、ソースから宛先に転送されないファイルの拡張子を定義するために使用されます。
次の「ls temp」フォルダーを実行して、temp フォルダーの内容を確認します。次に、-include および -exclude オプションを指定して「rsync」コマンドを実行します。コマンドによると、temp フォルダーのすべての CSV ファイルが files フォルダーに転送され、転送時に temp フォルダーのすべてのテキスト ファイルが省略されます。次に、「ls files」コマンドを実行して、temp フォルダーから files フォルダーにどのファイルが転送されたかを確認します。
温度rsync -a temp/ files/ --include=*.csv --exclude=*.txt
lsファイル
次の出力は、一時フォルダーに 2 つの CSV ファイル、2 つのテキスト ファイル、および 2 つの BASH ファイルが含まれていることを示しています。転送前はファイル フォルダーは空であり、2 つの CSV ファイルと 2 つの BASH ファイルが転送されます。
転送後にソースファイルとフォルダーを削除する
以前のすべての「rsync」コマンドでは、ソース ファイルとフォルダーは、宛先の場所に転送した後もソースの場所に残ります。ただし、場合によっては、ファイルやフォルダーを目的の場所に永久に転送する必要があります。このタスクは、「rsync」コマンドで –remove-source-files オプションを使用して実行できます。 「ls」コマンドを実行して、現在の場所にあるすべてのファイルとフォルダーを確認します。 「ls temp」コマンドを実行して、temp フォルダー内のファイルとフォルダーを確認します。次に、-remove-source-files オプションを指定して「rsync」コマンドを実行し、転送の完了後にソースの場所のファイルとフォルダーを削除します。再度「ls」コマンドを実行して、ソースファイルがソースの場所から削除されたかどうかを確認します。
ls温度
rsync employees.csv temp/ --remove-source-files
ls
次の出力は、現在の場所の「employees.csv」ファイルが一時フォルダーに転送され、転送後に「employees.csv」ファイルがソースの場所から削除されることを示しています。
結論
「rsync」は Linux の非常に便利なツールで、さまざまなオプションを使用して、ある場所から別の場所へのファイルやフォルダーの送信タスクを容易にします。 「rsync」コマンドを使用して、ファイルとフォルダを圧縮してある場所から別の場所に転送する方法、ファイルとフォルダのサイズの設定、ファイルの種類の設定、帯域幅制限の設定などを、15 の簡単な例で示します。このチュートリアル。このチュートリアルは、Linux ユーザーが Linux の「rsync」コマンドの基本的な使い方を正しく理解するのに役立ちます。