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