Linux rsyncコマンドの便利な例10選
Linuxのrsyncコマンドは、強力なファイルコピーおよびフォルダー同期ツールです。ここでは、あなたのシステムで役立てることができる10の一般的な使用例を紹介します。
rsyncツール
rsyncツールは、2台のコンピュータ間でファイルやディレクトリをコピーします。これは、ソースコンピュータに存在しないファイルを見つけるためにディレクトリツリーをスキャンする高度なアルゴリズムを使用しています。これらのファイルは、宛先コンピュータに転送されます。
ryncそれは非常に賢く、どの既存ファイルの部分が変更されたかを判断し、変更された部分だけを送信します。
rsyncを使用して、ハードドライブの別の場所、同じコンピュータ内の別のハードドライブ、外部接続のUSBドライブ、またはその他のネットワークでアクセス可能な場所にファイルをコピーすることができます。
その上、rsyncはオプションでシンボリックリンク、ハードリンク、ファイル所有権、パーミッション、アクセス時間などのファイルメタデータを保持することができます。これらすべての機能をサポートするために、rsyncには多くのオプションがあり、それらをすべて理解するには時間がかかります。ここでは、始めるための10例を集めました。すでにrsyncを使ったバックアップについて書いているので、今回は他の使い方に焦点を当てています。
多くのオプションがあるにもかかわらず、rsyncコマンドの構文はシンプルです。ソース、デスティネーション、使用したいオプションを提供する必要があります。rsyncはすでにあなたのLinuxコンピュータにインストールされているでしょう。私たちのテストマシンではすべてインストールされていましたが、もしインストールされていない場合は、必ずあなたのディストリビューションのリポジトリにあります。
1. ファイルを別のディレクトリにコピーする
ここに始めるための簡単な例があります。私たちは「project-files」ディレクトリから「Documents」ディレクトリにファイルをコピーします。二つのオプション、-a(アーカイブ)オプションと-v(詳細)オプションを使用しています。詳細オプションはrsyncに何をしているのかを説明するように指示します。
archiveオプションはファイルの所有権と、これから見るいくつかの項目を保持します。
コマンドの形式は
options source-location destination-locationrsync -av /home/dave/project-files/ /home/dave/Documents/「Documents」フォルダーでlsを使用すると、ファイルがコピーされていることがわかります。
「rsync」が動作している間、ファイルはコピーされるにつれてリスト表示されます。私たちは次のように言われています:
- 送信されるバイト数。
- 受信したバイト数。ファイル転送が行われる前に、
rsyncは転送する必要のあるファイルを特定する必要があります。そのために、rsyncは宛先のファイルに関する情報を取得しなければなりません。この情報は受信したバイトに含まれています。 - 転送の速度。
- コピーされたファイルの合計サイズ。
- "スピードアップ"。これは、総サイズを送信バイト数と受信バイト数の合計で割った比率です。この数値が大きいほど、転送がより効率的です。
ソースディレクトリ内のテキストファイルを修正し、rsyncコマンドを再実行しました。
rsync -av /home/dave/project-files/ /home/dave/Documents/
今回は、更新する必要があるのは修正したテキストファイルのみです。速度向上の数値は現在30,850です。これは、その単一のファイルの修正部分をコピーする方が、すべてのファイルをコピーするよりもどれほど効率的であるかということです。
-a(アーカイブ)オプションは、実際には他のオプションのコレクションを表しています。これは、次のすべてのオプションを使用するのと同じです:
- 強調: ソースディレクトリ内のディレクトリツリーを再帰的に処理し、存在しない場合は作成して、宛先ディレクトリにコピーします。
- l: シンボリックリンクをシンボリックリンクとしてコピーします。
- p: ファイルの権限を保持します。
- t: ファイルの修正時刻を保持します。
- g: グループの権限を保持します。
- o: ファイルの所有権を保持します。
- D: 特殊ファイルとデバイスファイルをコピーします。特殊ファイルとは、ソケットや先入れ先出しパイプ(FIFO)などの、ファイルとして扱われる通信中心のアイテムのことです。デバイスファイルは、デバイスや擬似デバイスへのアクセスを提供する特殊ファイルです。
これは非常に頻繁に使用される組み合わせであり、rsyncはそれらすべてを呼び出すための短縮形として-a(アーカイブ)オプションを提供します。
2. ディレクトリを別のディレクトリにコピーする
前のrsyncコマンドを見ると、ソースディレクトリのファイルパスには後ろにスラッシュ「/」があります。これは重要です。これによりrsyncはディレクトリの内容をコピーするように指示します。後ろにスラッシュを付けない場合、rsyncはディレクトリ自体とその内容をコピーします。
rsync -av /home/dave/project-files /home/dave/Documents/今回はディレクトリ名がファイル名に追加されてリストされます。宛先ディレクトリの中を見ると、ソースフォルダがその中のファイルとともにコピーされているのがわかります。
ls Documents/ls Documents/project-files/3. ディレクトリを別のドライブにコピーする
同じハードドライブの別の場所にファイルをコピーすることは、ドライブの故障に対する保護にはなりません。そのドライブが故障すると、ファイルのソースと宛先のコピーをどちらも失ってしまいます。別のハードドライブにコピーすることは、データを保護するためのはるかに堅牢な方法です。必要なのは、宛先ドライブへの正しいパスを指定することだけです。
rsync -av /home/dave/project-files /run/mount/drive2
もう一つのハードドライブを見ると、ディレクトリとファイルがそこにコピーされたことがわかります。
ls run/mount/drive2/project-files/4. まずドライランを行うこと
私たちがrsyncがどのようにファイルを有用に削除できるかを見る前に、rsyncがドライランを実行する方法について見てみましょう。
ドライランでは、rsyncは私たちが要求したアクションを実行する動作を模倣しますが、実際にはそれを実行しません。コマンドが実行された場合に何が起こったかを報告します。このようにして、コマンドが私たちの期待通りに正確に動作することを確認できます。
ドライランを強制するために、--dry-runオプションを使用します。
rsync -av --dry-run /home/dave/geocoder /run/mount/drive2コピーされることになっていたファイルが私たちのためにリストアップされ、通常の統計が表示された後、何も実際には行われていないことを知らせるためにメッセージ (DRY RUN) が表示されます。
5. 送信先ディレクトリ内のファイルを削除する
--deleteオプションは、rsyncにソースディレクトリにないファイルやディレクトリを宛先ディレクトリから削除するよう指示します。これは、宛先ディレクトリがソースディレクトリの正確なコピーになることを意味します。私たちは慎重に、最初に--dry-runオプションを使用します。
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive22つのファイルが削除されるとのことです。削除されても問題ないことが確かであれば、--dry-runオプションを外して、実際にコマンドを実行することができます。
rsync -av --delete /home/dave/geocoder /run/mount/drive2今回はディレクトリの内容が同期され、2つの余分なファイルが削除されました。
6. ソースファイルの削除
転送が成功した後にソースファイルを削除するオプションを選択することで、rsyncをコピーではなく移動のように動作させることができます。転送が成功しなかった場合、ソースファイルは削除されません。我々が使用する必要があるオプションは--remove-source-filesです。
rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2ファイルが転送されなくても、ファイルを削除できることに注意してください。その理由は、rsyncがチェックした場合、すべてのファイルがすでに宛先ディレクトリに存在し、rsyncが行うべきことがない場合、rsyncはそれを成功した転送と考えるからです。
また、rsyncはソースディレクトリからファイルを削除するだけです。ソースディレクトリやサブディレクトリを削除することはなく、それらの中のファイルだけを削除します。これをソースディレクトリでlsの
ls -R geocoder7. リモートコンピュータにファイルをコピーする
リモートコンピュータとフォルダを同期させるには、両方のコンピュータにrsyncをインストールする必要があります。rsyncをリモートコンピュータに使う前に、両方のコンピュータ間でSSH通信を設定してください。
リモートコンピュータで通常のユーザーとしてリモートログインできる必要があります。rsyncが動作するためには、IDとパスワードを使用してログインするか、SSHキーを設定して安全なパスワードなしのアクセスを行うかは重要ではありませんが、ユーザーとしてログインできない場合は、rsyncも機能しません。
パスワードでログインすると、rsyncがパスワードを要求します。SSHキーを使用してログインすると、プロセスはシームレスになります。
必要な追加の作業は、ユーザーアカウント名とリモートコンピュータのIPアドレスを宛先ファイルパスの先頭に追加することだけです。ユーザー名とコンピュータ名またはIPアドレスを区切るには、アットサイン「@」を使用し、コンピュータ名またはIPアドレスとディレクトリパスを区切るためにコロン「:」を使用します。
私たちのテストネットワークでは、これら2つのコマンドは同等です。
rsync -av /home/dave/geocoder dave@nostromo.local:/home/dave/Downloadsrsync -av /home/dave/geocoder dave@192.168.86.60:/home/dave/Downloads私たちは、ファイルをローカルでコピーする時と同じ情報を報告されます。
8. ファイルまたはディレクトリを含めるか除外するか
ソースディレクトリには、宛先コンピュータにコピーしたくないファイルやディレクトリが含まれている場合があります。それらを除外するには、--exclude オプションを使用できます。同様に、--include オプションを使用して、特定のファイルやディレクトリを含めることもできます。
この特徴は、--includeオプションを単独で使用すると、すべてのファイルが通常通りコピーされることです――特に指定したファイルも含まれます。特定のファイルだけをコピーするには、他のすべてを--excludeする必要があります。
コマンドに関しては、好きなだけ --include および --exclude オプションを使用できますが、必ず --exclude オプションの前に --include オプションを置いてください。また、ソースファイルパスの末尾にスラッシュが付いていることを確認してください。
このコマンドは、CソースコードファイルとCSVデータファイルのみを宛先コンピュータにコピーします。
rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoderコピーされたファイルは、私たちが特に含めたものだけです。
9. 転送中のファイルを圧縮する
-z(圧縮)オプションは、rsyncが転送されるファイルを圧縮する原因となります。ただし、転送先のコンピューターには圧縮されたファイルとして保存されるわけではなく、転送中のみ圧縮されます。これにより、長時間の転送が速くなることがあります。
rsync -avz /home/dave/geocoder /run/mount/drive210. 進捗の監視
長時間の転送について言えば、転送の進捗を見るためにいくつかの統計を追加することができます。
-P(部分、進行)オプションは、実際には2つのオプション、--partialと--progressを追加します。--partialオプションは、転送が失敗した場合にrsyncに部分的に転送されたファイルを保持するよう指示します。これにより、転送の再開時に時間を節約できます。
--progressオプションは、各ファイルについて、転送されたデータのバイト数とパーセンテージ、転送速度、所要時間、転送されているファイルの番号、および残りのファイルの数を表示します。
rsync -aP /home/dave/geocoder /run/mount/drive2出力は非常に速くスクロールしていくため、読みづらいです。コマンドから-v(詳細)オプションを削除することで、少し改善できます。それでも、通過するのが速すぎて読みづらいです。
全体の転送の進捗を監視することは、しばしばより有用です。これは、--infoオプションを使用し、"progress2"をパラメータとして渡すことで実行できます。
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2これは実際に役立つ進捗報告を提供します。
ステロイドを使用したかのような\tcp
rsync コマンドは速く、柔軟性があり、使い方を覚えるための時間をかける価値があります。rsync コマンドの基本的な形式は、-av オプション、ソースディレクトリ、デスティネーションディレクトリを含んでおり、全く難しくありません。
多くのユースケースでは、それだけで十分です。それに慣れれば、あとは自然についてきます。


















