GNU/Linux >> Linux の 問題 >  >> Linux

Rsyncを使用してサーバー間でファイルをコピー/同期する方法

はじめに

Rsyncは、サーバー間でファイルを同期したり、FTPを必要とせずにサーバー間でファイルを移動したりするための優れた方法です。 SSHプロトコルを介して2つのサーバーを接続し、サーバー間でのデータ転送を可能にします。この記事の後半で説明するrsyncデーモンは、独自のプロトコルを使用し、指定されたポートで実行されます。以下では、基本について説明します。サーバー間でのコピー、rsyncデーモンとの間のコピー、および異なるサーバー上でのファイルの同期の維持。

前提条件

–両方にrsyncがインストールされている2台のLinuxサーバー。
–転送を開始するサーバーは、受信サーバーのSSHポート(またはrsyncデーモンに接続している場合はrsyncポート)にアクセスできる必要があります。
–ユーザーはrsyncを使用するための権限を持っている必要があります(以下の例はrootユーザーとして実行されます)。

Rsyncの基本

Rsyncは、ファイルを別のサーバーにプッシュしたり、別のサーバーからファイルをプルしたりできます。 2つの違いは構文にあります。最初にローカルファイルを指定すると、プッシュが開始されます。最初にリモートホストを指定すると、プルが開始されます。以下の構文の正確なタイプを見てみましょう。

rsync [-options] SOURCE [email protected]:DESTINATION

プル:

rsync [-options] [email protected]:SOURCE DESTINATION

[-options] 使用できるすべての異なるオプションです。以下の例で参照して説明します。すべてのオプションの完全なリストについては、マニュアルページを確認してください。

SOURCE / directory / path / to / the / file / or / directoryの略です コピーされます。

DESTINATION / directory / path / to / the / new / locationの略です 受信ホスト上。

[email protected] rsyncが接続するリモートホスト上のユーザーです。

x.x.x.x リモートホストのIPアドレスを表します。 DNSが構成されている場合は、ホスト名にすることもできます。

ここで、rsyncが接続するデフォルトのポート22の外側のポートを指定する必要があるとします。これは、オプション -eを使用して行います。 。以下の例を参照してください( PORTを置き換えます 接続する必要のあるポート番号を使用してください。

プッシュ:

rsync [-other options] -e 'ssh -p PORT' SOURCE [email protected]:DESTINATION

プル:

rsync [-other options] -e 'ssh -p PORT' [email protected]:SOURCE DESTINATION

簡単なファイル転送の例

まず、あるサーバーから別のサーバーへの.txtファイルのプッシュを開始します。

rsync /home/simple.txt [email protected]:/home

このコマンドは、ファイル simple.txtをコピーします ローカルサーバーからリモートサーバーの/home ディレクトリ。

2台のサーバー間のRsync転送。

右側では、 lsを実行しました rsyncの前、そして実行後に​​再び、ファイルがコピーされたことがわかります。

プルの例を次に示します。

rsync [email protected]:/home/pullme.txt /home

ファイルpullme.txt / home のリモートサーバー(x.x.x.x)にあります ディレクトリ。このコマンドは、ファイルをローカルサーバーの / homeにコピーします ディレクトリ。

この方法を使用して、指定した任意の単一ファイルをプッシュ/プルできます。それでは、ディレクトリに入りましょう。

ディレクトリファイル転送

ディレクトリの移動は簡単です。 -dを追加します オプションで、ディレクトリのみを移動します。ディレクトリとその内容を移動する場合は、 -rを使用します 代わりに、すべてのファイルとサブフォルダーを再帰的にコピーします。その間、 -tに取り組みましょう オプション。このオプションは、ファイルが最後に変更された日時をコピーします。 -tを使用する ファイルが最後に編集された日時を正確に記録するのに適しています。これらのオプションは、プッシュまたはプルで機能します。

以下の例では、 pullme.txtを移動しました / transfer_meにファイルします ディレクトリ。 / simpleディレクトリも作成しました (ファイル simple.txtが含まれています ) / transfer_me内 。次に、 / transfer_meをプッシュしました リモートサーバーへのディレクトリ。

rsync -rt /home/transfer_me [email protected]:/home

Rsyncディレクトリ

ご覧のとおり、リモート(受信)サーバーのフォルダーには、ローカルフォルダーが開始サーバーで実行したすべてのサブディレクトリとファイルが含まれています。

Rsyncデーモンへの接続

このセクションには、rsyncデーモンを実行しているサーバーが必要です。これらの手順をテストするには、rsyncデーモンの設定に関する記事を参照してください。

rsyncを使用した基本的なファイル/ディレクトリの転送について説明したので、rsyncデーモンへの接続について説明します。 rsyncデーモンはサーバー上で常に実行されているため、サーバーに割り当てられたrsyncデーモンディレクトリにいつでもプッシュしたり、そこからプルしたりできます。 rsyncデーモンへのプルとプッシュには2つの形式があります。

プル:

rsync [-options] rsync://[email protected][:PORT]SOURCE DESTINATION

プル(IPアドレス/ホスト名の後の二重コロンに注意):

rsync [-options] [email protected]::SOURCE DESTINATION

プッシュ:

rsync [-options] SOURCE rsync://[email protected][:PORT]DESTINATION

プッシュ(IPアドレス/ホスト名の後の二重コロンに注意):

rsync [-options] SOURCE [email protected]::DESTINATION

以下のrsyncデーモンからのプル方法を参照してください(デフォルトのrsyncデーモン接続ポートであるため、以下のポート番号873の使用は冗長です。デフォルト以外のポートを設定した場合にコマンドをフォーマットする方法を示すためにこれを含めますrsyncデーモン上):

rsync -rt rsync://[email protected]:873/files/ /home/pulledfromdaemon

Rsyncデーモンプル

ここでは、 files モジュール名です。そのディレクトリ( pullme.txt )内のすべてをプルしているので およびsimple.txt )ソースのモジュール名のままにしておきます。

Rsyncとのファイルの同期

次に、ファイルを同期する方法について説明します。適切なオプションを使用して、単一のrsyncコマンドで同期を実行できます。このコマンドをスクリプトまたはcronジョブに入れて、オンデマンドまたは自動で実行できます。デーモンをプッシュ、プル、または使用している場合、コマンドは異なりますが、オプションは同じままです。

rsync -rtu --delete SOURCE [email protected]:/DESTINATION

この例では、 -rtu --deleteに注意してください。 オプション。 -rについてはすでに説明しました および-t オプション–再帰コピーとタイムスタンプコピー。 -u オプションは、 SOURCEから異なる/変更/追加されたファイルのみを更新するようにrsyncに指示します DESTINATIONへ 。オプション--delete DESTINATIONからすべてのファイルを削除します そのSOURCE もう持っていないかもしれません。これ(および -l <​​/code>などの他のオプション) シンボリックリンクの場合)複数の場所にあるディレクトリをソースで最新の状態に保つことができます。

サーバー間でファイルをrsyncしたり、rsyncデーモンを使用したり、ファイルの同期を簡単に維持したりできるようになりました。このハウツーをフォローしていただきありがとうございます!その他の更新については、ここに戻って確認するか、VPSホスティングを含む当社が提供する多くのサービスをご覧ください。

VPSホスティングサービスと仮想プライベートサーバーの詳細をご覧ください。


Linux
  1. LinuxでRsyncを使用して新しいファイルまたは変更/変更されたファイルを同期する方法

  2. rsyslogを使用してLinuxログ集約サーバーを作成する方法

  3. Rsyncを選択的に消音する方法は?

  1. 特定のファイルを除外しながらrsyncを使用してディレクトリを再帰的にコピーする方法

  2. Windows PC からリモート Linux サーバーに rsync を使用する方法は?

  3. 複数の Web サーバー間でアセットを共有する方法は?

  1. SCPとFTPを使用してLinuxのサーバー間でファイルを転送する方法

  2. 2つのリモート間でファイルをRsyncする方法は?

  3. LinuxでRsyncコマンドを使用するにはどうすればよいですか?