Linux rsync コマンドの 10 の便利な例
公開: 2022-10-28 Linux のrsync
コマンドは、強力なファイル コピーおよびフォルダー同期ツールです。 ここでは、独自のシステムでうまく利用できる 10 の一般的なユース ケースを紹介します。
rsync ツール
rsync
ツールは、2 台のコンピューター間でファイルとディレクトリをコピーします。 ディレクトリ ツリーをスキャンして、移行先コンピュータには存在しない移行元コンピュータ上のファイルを見つける高度なアルゴリズムを使用します。 これらのファイルは、宛先コンピューターに送信されます。 rync
が優れている点は、既存のファイルのどの部分が変更されたかを把握し、変更された部分のみを送信できることです。
rsync
を使用して、ハード ドライブの別の場所、同じコンピューターの別のハード ドライブ、外部接続された USB ドライブ、またはその他のネットワーク アクセス可能な場所にファイルをコピーできます。
さらに、 rsync
はオプションで、シンボリック リンク、ハード リンク、およびファイルの所有権、アクセス許可、アクセス時間などのファイル メタデータを保持できます。 このすべての機能をサポートするために、 rsync
には多くのオプションがあり、それらをすべて理解するには時間がかかります。 開始するのに役立つこれらの 10 の例を集めました。 rsync
でバックアップを行うことについてはすでに書いたので、ここでは他の用途に集中しています。
多くのオプションがあるにもかかわらず、 rsync
コマンドの構造は単純です。 ソース、宛先、および使用するオプションを提供する必要があります。 おそらく、 rsync
が Linux コンピューターに既にインストールされていることに気付くでしょう (すべてのテスト マシンにインストールされていました)。
1.ファイルを別のディレクトリにコピーする
これは簡単な例です。 ファイルを「project-files」ディレクトリから「Documents」ディレクトリにコピーします。 -a
(アーカイブ) オプションと-v
(詳細) オプションの 2 つのオプションを使用しています。 verbose オプションは、 rsync
が何をしているのかを説明するように指示します。 archive
オプションは、ファイルの所有権と、後で説明するその他の項目を保持します。
コマンドの形式はoptions source-location destination-location
です。
rsync -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 です。 これは、すべてのファイルをコピーするよりも、その 1 つのファイルの変更された部分をコピーする方がはるかに効率的であるということです。
-a
(アーカイブ) オプションは、実際には他のオプションのコレクションを表します。 これらのオプションをすべて使用するのと同じです。
- r : ソース ディレクトリのディレクトリ ツリーを再帰的に処理し、それらを宛先ディレクトリにコピーし、そこにまだ存在しない場合は作成します。
- l : シンボリック リンクをシンボリック リンクとしてコピーします。
- p : ファイルのパーミッションを保持します。
- t : ファイルの変更時刻を保持します。
- g : グループ権限を保持します。
- o : ファイルの所有権を保持します。
- D : 特殊ファイルとデバイス ファイルをコピーします。 特殊ファイルは、ソケットや先入れ先出しパイプ (FIFO) など、ファイルのように扱われる通信中心のアイテムにすることができます。 デバイス ファイルは、デバイスおよび疑似デバイスへのアクセスを提供する特別なファイルです。
これは非常に頻繁に使用される組み合わせであり、 rsync
はそれらすべてを呼び出す簡単な方法として-a
(アーカイブ) オプションを提供します。
2. ディレクトリを別のディレクトリにコピーする
前のrsync
コマンドを見ると、ソース ディレクトリのファイル パスの末尾にスラッシュ「/」が表示されます。 これは重要です。 ディレクトリの内容をコピーするようにrsync
に指示します。 末尾のスラッシュを指定しない場合、 rsync
はディレクトリとその内容をコピーします。
rsync -av /home/dave/project-files /home/dave/Documents/
今回は、リストされているとおりに、ファイル名にディレクトリ名が追加されます。 宛先ディレクトリ内を見ると、ソース フォルダがその中のファイルとともにコピーされていることがわかります。
ls ドキュメント/
ls ドキュメント/プロジェクト ファイル/
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/drive2
2 つのファイルが削除されることが通知されました。 それらが削除されてもかまわないと確信している場合は、 --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
に-R
(再帰) オプションを使用することで確認できます。
ls -R ジオコーダ
7. ファイルをリモート コンピューターにコピーする
フォルダーをリモート コンピューターと同期するには、両方のコンピューターにrsync
をインストールする必要があります。 リモート コンピューターにrsync
を使用する前に、2 台のコンピューター間の SSH 通信をセットアップします。
rsync
を機能させるには、リモート コンピューターに通常のユーザーとしてリモートでログインできる必要があります。 ID とパスワードを使用してログインするか、パスワードなしで安全にアクセスできるように SSH キーを設定しているかは問題ではありませんが、ユーザーとしてログインできない場合、 rsync
は機能しません。また。
パスワードでログインすると、 rsync
はパスワードの入力を求めます。 SSH キーを使用してログインする場合、プロセスはシームレスです。
追加で行う必要があるのは、リモート コンピューターのユーザー アカウント名と IP アドレスを宛先ファイル パスの先頭に追加することだけです。 アットマーク「 @
」を使用してユーザー名をコンピューター名または IP アドレスから分離し、コロン「 :
」を使用してコンピューター名または IP アドレスをディレクトリ パスから分離します。
テスト ネットワークでは、これら 2 つのコマンドは同等です。
rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads
rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads
ファイルをローカルにコピーするときと同じ情報が報告されます。
8. ファイルまたはディレクトリを含めるまたは除外する
ソース ディレクトリに、コピー先のコンピューターにコピーしたくないファイルやディレクトリがある場合があります。 --exclude
オプションを使用してそれらを除外できます。 同様に、 --include
オプションを使用して、特定のファイルとディレクトリを含めることを選択できます。
--include
オプションを単独で使用すると、特別にインクルードされたファイルを含め、すべてのファイルが通常どおりコピーされます。 含まれているファイルのみをコピーするには、 --exclude
他のすべてを除外する必要があります。
コマンドで--include
および--exclude
オプションを好きなだけ使用できますが、必ず--include
オプションを--exclude
オプションの前に配置してください。 また、ソース ファイル パスの末尾にスラッシュがあることを確認してください。
このコマンドは、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/drive2
10.進捗状況の監視
長い転送といえば、転送の進行状況を確認できるように統計を追加できます。
-P
(partial, progress) オプションは、実際には--partial
と--progress
の 2 つのオプションを追加します。 --partial
オプションは、転送が失敗した場合に部分的に転送されたファイルを保持するようにrsync
に指示します。 これにより、転送を再開するときの時間を節約できます。
--progress
オプションは、ファイルごとに、転送されたデータ (バイト単位およびパーセンテージ)、転送速度、所要時間、転送中のファイル数、および残りのファイル数を出力します。
rsync -aP /home/dave/geocoder /run/mount/drive2
出力は非常に速くスクロールされ、読みにくいです。 コマンドから-v
(verbose) オプションを削除すると、状況が少し改善されます。 それでも、ぐるぐると通り過ぎるので読むのはまだ難しいです。
多くの場合、転送全体の進行状況を監視する方が便利です。 これは、–info オプションを使用して実行でき、「progress2」をパラメーターとして渡します。
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2
これにより、実際に役立つ進捗レポートが得られます。
ステロイドの cp のように
rsync
コマンドは高速で柔軟性があり、慣れるのに十分な時間を費やす価値があります。 -av
オプション、ソース ディレクトリ、および宛先ディレクトリを指定したrsync
コマンドの基本的な形式は、まったく覚えにくいものではありません。
多くのユースケースでは、これで十分です。 それに慣れれば、残りは簡単にできます。
関連: Rsyncでデータを同期するための初心者向けガイド