はじめに
remote sync、またはrsyncコマンドは、マシン、ホスト、リモートシェル、または上記の組み合わせの間でファイルとディレクトリを転送および同期するために使用されます。これは、Linuxを使用する場合に知っておくべき強力なユーティリティです。ここでは、rsyncコマンドの基本について説明します。この記事ではUbuntu20.04を使用していますが、他のLinuxディストリビューションでも同じコマンドを使用できます。
rsyncが特別な理由は何ですか?
rsyncコマンドは、ファイルの送受信時に圧縮と解凍を使用します。これは、消費する帯域幅が非常に少ないことを意味します。 Rsyncはリモート更新プロトコルを使用するため、ソースと宛先の違いのみを更新します。また、所有者、グループ、リンク、権限、およびデバイスもサポートします。
rsyncをインストールするにはどうすればいいですか?
ほとんどのLinuxディストリビューションには、rsyncがインストールされています。そうでない場合は、Ubuntuシステムで次のコマンドを使用してください。
sudo apt-get install rsync
Rsync構文
このセクションでは、rsync構文について簡単に説明します。
ローカルからローカルへの転送または同期
rsync {option} {source} {destination}
ローカルからリモートへの転送または同期
rsync {option} {source} {[email protected]:destination}
リモートからローカルへの転送または同期
rsync {option} {[email protected]:destination} {destination}
ソースはソースディレクトリです
宛先は宛先ディレクトリです
オプションはrsyncコマンドオプションです
ユーザーはリモートユーザー名です
ホストはIPまたはリモートホスト名です
rsyncの使用方法
ファイルをローカルにコピー
ファイルをローカルにコピーするには、次を使用します:
rsync –a {filename} {destination}
上記の例では、「 source.zip」をコピーしています。 」を現在のディレクトリからドキュメントに移動します。
次のコマンドを使用して、ドキュメント内のすべてのファイルとディレクトリを一覧表示することで、ファイルがコピーされたかどうかを確認できます。
ls
ご覧のとおり、「 source.zip 」はDocumentsディレクトリにあります。
宛先にファイルの名前を追加しない場合、ソースファイルと同じ名前がコピーされます。宛先ファイルの名前を変更するには、次を使用します:
rsync –a {filename} {destination/filename}
以下の例では、「 source.zip」をコピーします 」をもう一度実行しますが、今回は名前を「 destination.zip」に変更します。 」。
「destination.zip 下の画像に示すように、」がDocumentsディレクトリにコピーされました。
ディレクトリの内容を宛先にコピーします
以下のコマンドを使用して、ソースディレクトリの内容を宛先にコピーできます。
rsync –av {source}/ {destination}
上の画像は「ソース」のコンテンツを示しています 」ディレクトリが「宛先」にコピーされます 」ディレクトリ。
ディレクトリ全体を宛先にコピーします
ディレクトリの内容のみをコピー先にコピーする場合は、次を使用します。
rsync –av {source} {destination}
上記の例では、「ソース」をコピーしています 」ディレクトリとその内容を「宛先」に移動します 」ディレクトリ。
進捗状況を表示
進行状況を表示するには、次を使用します:
rsync –rv –progress {source} {destination}
ファイルを無視する
特定のファイルを無視する場合は、次を使用します:
rsync -vr --exclude '{condition}' {source} {destination}
「ソース 」ディレクトリには次のファイルがあります:
以下の例では、「 s」で始まるファイルは無視します。 」。
画像が示すように、「ファイル」のみ 」がコピーされます。
ファイルとディレクトリの一覧表示
rsyncを使用して、ソースのコンテンツを一覧表示できます。
rsync {filename}
上記のコマンドは、Documentsディレクトリの内容を一覧表示します。
ローカルマシンからリモートマシンにファイルをコピーする
ファイルをリモートマシンに移動するには、openssh-serverをインストールする必要があります。そのためのコマンドは次のとおりです。
sudo apt update
sudo apt install openssh-server
これをインストールしたら、以下のコマンドを使用してファイルまたはディレクトリを移動できます。
rsync –a {source} {remote [email protected] IP:/destination}
リモートマシンのパスワードの入力を求められます。
以下の例では、「 doc」を移動します 」をリモートホームディレクトリに移動します。
lsを使用すると、「 doc 」はここに移動されました。
リモートからローカルマシンにファイルをコピーする
上記の例で使用したものと同じコマンドを使用します。
rsync –a {remote source} {local [email protected] IP:/destination}
この例では、「 remotesrcdoc」を移動します 」リモートマシンからローカルマシンへ。
lsを使用すると、「 remotesrcdoc 」はここに移動されました。
現在の日付を宛先ファイルに追加
次のコマンドを使用して、宛先ファイルまたはディレクトリの名前に日付を追加できます。
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +\\%Y-\\%m)
以下の例では、「 source.zip」を移動します 」をデスクトップに追加し、宛先に名前を付けて、日付を追加します。
ソースファイルと宛先ファイルの違いを表示する
以下のコマンドを使用して、ソースファイルと宛先ファイルの違いを確認できます。
rsync –avzi {source}/ {destination}/
下の画像は、「ドーナツ」というファイルを示しています。 」と「Hello.txt 」は宛先ディレクトリに存在しません。
パラメータ「f 」はファイルを意味します。その他のパラメータは次のとおりです。
t:タイムスタンプの変更
d:目的地の変更
s:ファイルサイズの変更
ファイル転送時の帯域幅を制限する
ファイル転送中に帯域幅を制限するには、次を使用します:
rsync -vr --bwlimit=1000 {source}/* {destination}
以下の例では、帯域幅を1000kBに制限しています。
rsyncの詳細
rsyncで利用可能なオプションの詳細を確認するには、次を使用してください:
rsync –help
rsyncコマンドの基本のいくつかをカバーし、ファイルをローカルおよびリモートで転送および同期する方法を見ました。
scpコマンドを使用してファイルを同期する場合は、こちらにアクセスしてください。