ネットワーク上のシステム間でファイルを転送する場合、LinuxおよびUnixユーザーは多くのツールを自由に使用できます。
データ転送で最も一般的なプロトコルはSSHとFTPです。 FTPは非常に人気がありますが、ファイルを転送する最も安全な方法であるSSHを常に使用することをお勧めします。
scp
など、SSHを介したファイル転送専用のツールがあります。 およびsftp
しかし、それらのどれもrsync
のすべての機能を備えていません 提供します。 rsync
データのミラーリング、増分バックアップ、システム間でのファイルのコピーなどに使用できます。
このチュートリアルでは、rsync
を使用してファイルをコピーする方法を説明します SSH経由。
要件#
-
rsync
ユーティリティは、宛先システムとソースシステムの両方にインストールする必要があります。インストールされていない場合は、ディストリビューションのパッケージマネージャーを使用してインストールできます:UbuntuとDebian:
sudo apt install rsync
CentOSとFedora:
sudo yum install rsync
-
リモートコンピュータへのSSHアクセス。
-
rsync
を実行しているユーザー コマンドとリモートSSHユーザーには、ファイルの読み取りと書き込みを行うための適切な権限が必要です。
rsync
の使用 SSH経由でファイルを転送するには#
rsync
を使用 、リモートサーバーとの間でSSHを介してファイルとディレクトリを転送できます。
rsync
を使用してファイルを転送するための一般的な構文 は次のとおりです:
Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]
SRC
の場所 ソースディレクトリ、DEST
宛先ディレクトリUSER
リモートSSHユーザー名とHOST
はリモートSSHホストまたはIPアドレスです。
新しいバージョンのrsyncは、デフォルトのリモートシェルとしてSSHを使用するように構成されているため、-e ssh
を省略できます。 オプション。
たとえば、単一のファイルを転送するには/opt/file.zip
ローカルシステムから/var/www/
へ IP 12.12.12.12
のリモートシステム上のディレクトリ 実行します:
rsync -a /opt/file.zip [email protected]:/var/www/
-a
オプションはアーカイブモードを表し、ディレクトリを再帰的に同期し、特別なデバイスとブロックデバイスを転送し、シンボリックリンク、変更時間、グループ、所有権、およびアクセス許可を保持します。
リモートマシンにパスワードなしのSSHログインを設定していない場合は、ユーザーパスワードの入力を求められます。
ファイルがリモートサーバーに存在する場合、ファイルは上書きされます。別の名前でファイルを保存する場合は、新しい名前を指定します。
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
リモートからローカルマシンにデータを転送するには、リモートの場所を送信元として使用し、ローカルの場所を宛先として使用します。
rsync -a [email protected]:/var/www/file.zip /opt/
rsync
を使用してディレクトリを転送する SSH経由でのファイル転送と同じです。
rsync
であることを知っておくことが重要です 末尾にスラッシュ/
を付けてソースディレクトリに異なる処理を与えます 。ソースディレクトリの末尾にスラッシュがある場合、rsync
ソースディレクトリの内容のみを宛先ディレクトリにコピーします。末尾のスラッシュを省略すると、ソースディレクトリが宛先ディレクトリ内にコピーされます。
たとえば、ローカルの/opt/website/images/
を転送するには /var/www/images/
へのディレクトリ 次のように入力するリモートマシンのディレクトリ:
rsync -a /home/linuxize/images/ [email protected]:/var/www/images/
--delete
を使用します ローカルディレクトリとリモートディレクトリを同期する場合のオプション。ソースディレクトリにファイルが存在しない場合、宛先ディレクトリ内のファイルが削除されるため、このオプションを使用する場合は注意が必要です。
rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/
リモートホストのSSHがデフォルトの22
以外のポートでリッスンしている場合 、-e
を使用してポートを指定します オプション。たとえば、SSHがポート3322
でリッスンしている場合 使用するもの:
rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/
大量のデータを転送する場合は、rsync
を実行することをお勧めします スクリーンセッション内でコマンドを実行するか、-P
を使用します rsync
に指示するオプション 転送中に進行状況バーを表示し、部分的に転送されたファイルを保持するには:
rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/
結論#
rsync
の使用方法を説明しました SSH経由でファイルとディレクトリをコピーして同期します。
rsync
を使用してファイルまたはディレクトリを除外する方法もお読みください。 。
ご不明な点がございましたら、お気軽にコメントをお寄せください。