rsync は Unix 系システム用に構築されたプロトコルで、データのバックアップと同期に信じられないほどの多用途性を提供します。ファイルを別のディレクトリにバックアップするためにローカルで使用したり、インターネット経由で他のホストと同期するように構成したりできます。
Windows システムでも使用できますが、さまざまなポート (Cygwin など) 経由でのみ使用できるため、このハウツーでは Linux でのセットアップについて説明します。まず、rsync クライアントをインストール/更新する必要があります。 Red Hat ディストリビューションでは、コマンドは「yum install rsync」で、Debian では「sudo apt-get install rsync」です。
root としてログインした後の Red Hat/CentOS 上のコマンド (Red Hat の最近のディストリビューションの一部は sudo メソッドをサポートしていることに注意してください)。
Debian/Ubuntu 上のコマンド。
ローカルバックアップにrsyncを使用する
このチュートリアルの最初の部分では、Directory1 から Directory2 にファイルをバックアップします。これらのディレクトリは両方とも同じハード ドライブ上にありますが、ディレクトリが 2 つの異なるドライブ上に存在する場合でも、これはまったく同じように機能します。これには、構成するバックアップの種類に応じて、いくつかの異なる方法があります。ほとんどの場合、次のコード行で十分です。
$ rsync -av -- delete /Directory1/ /Directory2/$ rsync -av -- delete /Directory1/ /Directory2/
上記のコードは、Directory1 の内容を Directory2 に同期し、両者の間に差異を残しません。 rsync は、Directory1 に存在しないファイルが Directory2 に存在することを検出すると、そのファイルを削除します。 rsync は、Directory1 で変更、作成、または削除されたファイルを検出すると、それらの同じ変更を Directory2 に反映します。
rsync を特定のニーズに合わせてカスタマイズするために使用できるさまざまなスイッチが多数あります。前述のコードが rsync にバックアップの処理を指示する内容は次のとおりです。
1. -a = 再帰 (ディレクトリに再帰)、リンク (シンボリックリンクをシンボリックリンクとしてコピー)、パーマ (アクセス許可を保持)、時間 (変更回数を保持)、グループ (グループを保持)、所有者 (所有者を保持)、デバイス ファイルを保持特別なファイルを保存します。
2. -v = 冗長。私が冗長性が重要だと考える理由は、rsync が何をバックアップしているのかを正確に確認できるようにするためです。これについて考えてください。ハード ドライブの調子が悪くなり、知らないうちにファイルの削除が開始され、rsync スクリプトを実行すると、その変更がバックアップにプッシュされ、取得したくないファイルのインスタンスがすべて削除されたらどうなるでしょうか。取り除く?
3. –delete = これは、Directory1 にない Directory2 にあるファイルを削除するように rsync に指示します。このオプションを使用する場合は、上記の理由から冗長オプションも使用することをお勧めします。
上記のスクリプトを使用して、rsync を使用して Directory1 を Directory2 にバックアップすることによって生成された出力を次に示します。詳細スイッチを使用しない場合、このような詳細な情報は受け取れないことに注意してください。
上のスクリーンショットは、File1.txt と File2.jpg が新規であるか、Directory2 に存在するコピーから変更されたものとして検出されたため、バックアップされたことを示しています。初心者向けのヒント: rsync コマンドのディレクトリの末尾にあるスラッシュに注目してください。これらは必要なものなので、必ず覚えておいてください。
このチュートリアルの最後で、さらにいくつかの便利なスイッチについて説明しますが、完全なリストを表示するには、「man rsync」と入力すると、使用するスイッチの完全なリストが表示されることを覚えておいてください。
ローカル バックアップに関する限りはこれで十分です。ご覧のとおり、rsync は非常に使いやすいです。これを使用してインターネット経由で外部ホストとデータを同期する場合は少し複雑になりますが、それを行うためのシンプル、高速、安全な方法を紹介します。
外部バックアップに rsync を使用する
rsync は外部バックアップ用にいくつかの異なる方法で構成できますが、SSH を介して rsync をトンネリングする最も実用的な (最も簡単で安全な) 方法について説明します。ほとんどのサーバー、さらに多くのクライアントにはすでに SSH があり、rsync バックアップに使用できます。ある Linux マシンをローカル ネットワーク上の別の Linux マシンにバックアップするプロセスを示します。 1 つのホストがインターネット上のどこかにある場合でも、このプロセスはまったく同じになります。ただし、ポート 22 (または SSH が設定されているポート) をサーバー側のネットワーク機器で転送する必要があることに注意してください。
サーバー (バックアップを受信するコンピューター) に、SSH と rsync がインストールされていることを確認します。
# yum -y ssh rsync をインストールします
# sudo apt-get インストール ssh rsync
サーバーに SSH と rsync をインストールすること以外に実際に行う必要があるのは、ファイルをバックアップするサーバー上にリポジトリをセットアップし、 SSH がロックされていることを確認することだけです 。使用する予定のユーザーが複雑なパスワードを持っていることを確認してください。また、SSH がリッスンするポート (デフォルトは 22) を切り替えることをお勧めします。
ローカル コンピューターで rsync を使用する場合と同じコマンドを実行しますが、SSH を介してローカル ネットワーク上のサーバーに rsync をトンネリングするために必要な追加が含まれています。ユーザー「geek」が「192.168.235.137」に接続し、上記と同じスイッチ (-av –delete) を使用している場合は、次のコマンドを実行します。
$ rsync -av -- delete -e ssh /Directory1/ geek@ 192.168 .235 .137 : /Directory2/$ rsync -av -- delete -e ssh /Directory1/ geek@ 192.168 .235 .137 : /Directory2/
22 以外のポートで SSH をリッスンしている場合は、ポート番号を指定する必要があります。たとえば、この例ではポート 12345 を使用しています。
$ rsync -av -- delete -e 'ssh -p 12345' /Directory1/ geek@ 192.168 .235 .137 : /Directory2/$ rsync -av -- delete -e 'ssh -p 12345' /Directory1/ geek@ 192.168 .235 .137 : /Directory2/
上のスクリーンショットからわかるように、ネットワーク経由でバックアップするときに表示される出力は、ローカルにバックアップする場合とほぼ同じであり、唯一異なるのは使用するコマンドです。パスワードの入力を求められることにも注目してください。 SSHで認証するためです。 RSA キーを設定してこのプロセスをスキップすることもできます。これにより、rsync の自動化も簡素化されます。
rsyncバックアップの自動化
Linux で Cron を使用すると、rsync などのコマンドの実行を自動化できます。 Cron を使用すると、Linux システムで夜間バックアップを実行したり、希望する頻度でバックアップを実行したりできます。
ログインしているユーザーの cron テーブル ファイルを編集するには、次のコマンドを実行します。
$ crontab -e
このファイルを編集するには、vi に精通している必要があります。 「I」と入力して挿入し、cron テーブル ファイルの編集を開始します。
Cron は次の構文を使用します: 時分、時刻、日、月、曜日、コマンド。
最初は少しわかりにくいかもしれないので、例を挙げて説明します。次のコマンドは、毎晩午後 10 時に rsync コマンドを実行します。
0 22 * * * rsync -av -- delete /Directory1/ /Directory2/0 22 * * * rsync -av -- delete /Directory1/ /Directory2/
最初の「0」は分を示し、「22」は午後 10 時を示します。このコマンドを毎日実行したいので、残りのフィールドにはアスタリスクを付けたままにし、rsync コマンドを貼り付けます。
Cron の構成が完了したら、Esc キーを押し、「:wq」(引用符なし) と入力して Enter キーを押します。これにより、vi での変更が保存されます。
Cron についてはこれよりもさらに詳しく説明することもできますが、これ以上説明することはこのチュートリアルの範囲を超えます。ほとんどの人は単純な毎週または毎日のバックアップだけを必要としますが、私たちが示した方法でそれを簡単に実現できます。 Cron の詳細については、マニュアル ページを参照してください。
その他の便利な機能
もう 1 つの便利な方法は、バックアップを zip ファイルに保存することです。 zip ファイルを配置する場所を指定し、そのディレクトリをバックアップ ディレクトリに rsync する必要があります。例えば:
$ zip /ZippedFiles/archive.zip /Directory1/ && rsync -av -- delete /ZippedFiles/ /Directory2/$ zip /ZippedFiles/archive.zip /Directory1/ && rsync -av -- delete /ZippedFiles/ /Directory2/
上記のコマンドは、Directory1 からファイルを取得し、/ZippedFiles/archive.zip に配置し、そのディレクトリを Directory2 に rsync します。ファイルにわずかな変更が加えられるたびに zip ファイルが変更されることを考えると、最初は、この方法は大規模なバックアップには非効率的であると思われるかもしれません。ただし、rsync は変更されたデータのみを転送するため、zip ファイルが 10 GB で、ディレクトリ 1 にテキスト ファイルを追加した場合、rsync は追加したのがそれだけであることを認識し (zip 形式であっても)、数キロバイトのみを転送します。変更されたデータの。
rsync バックアップを暗号化するには、いくつかの方法があります。最も簡単な方法は、ハード ドライブ自体 (ファイルのバックアップ先) に暗号化をインストールすることです。もう 1 つの方法は、ファイルをリモート サーバー (またはバックアップ先の他のハード ドライブ) に送信する前に暗号化することです。これらの方法については後の記事で説明します。
どのようなオプションや機能を選択しても、rsync はこれまでで最も効率的で多用途なバックアップ ツールの 1 つであることが証明されており、単純な rsync スクリプトでもデータの損失を防ぐことができます。
関連: 開発者と愛好家のための最高の Linux ラップトップ





