ホームページ » の仕方 » rsyncを使用してLinux上のデータをバックアップする方法

    rsyncを使用してLinux上のデータをバックアップする方法

    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 /

    上記のコードは、Directory1の内容をDirectory2に同期させ、両者に違いはありません。 rsyncがDirectory2にDirectory1にはないファイルがあることを検出した場合、rsyncはそれを削除します。 rsyncがDirectory1で変更、作成、または削除されたファイルを見つけると、それはDirectory2へのそれらの同じ変更を反映します。.

    rsyncを自分のニーズに合わせてカスタマイズするために使用できるスイッチはたくさんあります。前述のコードがrsyncにバックアップを処理するように指示するものは次のとおりです。

    1. -a =再帰的(ディレクトリに再帰的)、リンク(シンボリックリンクをシンボリックリンクとしてコピー)、パーマ(許可を保持)、グループ(グループを保持)、所有者(所有者を保持)、デバイスファイルを保持特別なファイルを保存する.
    2. -v =冗長です。冗長が重要であると思う理由は、rsyncがバックアップしている内容を正確に確認できるようにするためです。これについて考えてみましょう:あなたのハードドライブが悪くなって、あなたが知らないうちにファイルを削除し始めたなら、あなたはあなたのrsyncスクリプトを実行してバックアップにそれらの変更をプッシュします。取り除く?
    3. -delete =これは、rsyncに、Directory1に存在しないDirectory2に存在するファイルをすべて削除するように指示します。このオプションを選択した場合は、上記の理由から冗長オプションも使用することをお勧めします。.

    上記のスクリプトを使用して、ここにrsyncを使用してDirectory1をDirectory2にバックアップすることによって生成された出力があります。詳細スイッチがないと、そのような詳細情報は表示されません。.

    上のスクリーンショットは、File1.txtとFile2.jpgが、Directory2に存在するコピーから新規であるかそうでなければ変更されたものとして検出されたため、それらがバックアップされたことを示しています。ヒント:私のrsyncコマンドでは、ディレクトリの末尾に末尾のスラッシュがあることに注意してください - これらは必要なので、必ず覚えておいてください。.

    このチュートリアルの終わりに向かってもう少し便利なスイッチを見ていきますが、完全なリストを見るには「man rsync」と入力して使用するスイッチの完全なリストを見ることができます。.

    ローカルバックアップに関する限り、それについてはそれをカバーしています。あなたが言うことができるように、rsyncは非常に使いやすいです。インターネットを介してデータを外部ホストと同期するために使用する場合は、少し複雑になりますが、そのための簡単で高速、かつ安全な方法を紹介します。.

    外部バックアップにrsyncを使う

    rsyncは外部バックアップのためにいくつかの異なる方法で設定することができますが、SSHを通してrsyncをトンネリングする最も実用的な(最も簡単で最も安全な)方法を見ていきます。ほとんどのサーバー、そして多くのクライアントでさえすでにSSHを持っており、それはあなたのrsyncバックアップに使用することができます。ローカルネットワーク上で、あるLinuxマシンを別のマシンにバックアップするためのプロセスを説明します。あるホストがインターネットのどこかにいても、プロセスはまったく同じです。ポート22(またはSSHが設定されているポート)は、サーバー側のネットワーク機器に転送する必要があります。.

    サーバー(バックアップを受け取る予定のコンピューター)に、SSHとrsyncがインストールされていることを確認します。.

    #yum -y install ssh rsync

    #sudo apt-get install ssh rsync

    SSHとrsyncをサーバーにインストールする以外に、ファイルをバックアップしたいサーバー上にリポジトリを設定し、SSHがロックされていることを確認するだけです。使用する予定のユーザーが複雑なパスワードを持っていることを確認してください。また、SSHがlistenするポートを切り替えることをお勧めします(デフォルトは22)。.

    ローカルコンピュータでrsyncを使用するのと同じコマンドを実行しますが、SSH経由でrsyncをローカルネットワーク上のサーバーにトンネリングするために必要な追加機能を含めます。ユーザ「geek」が「192.168.235.137」に接続し、上記と同じスイッチ(-av -delete)を使用している場合は、次のように実行します。

    $ rsync -av -delete -e ssh /ディレクトリ1 / [email protected]:/ディレクトリ2 /

    SSHが22以外のポートで待機している場合は、この例のようにポート12345を使用するなど、ポート番号を指定する必要があります。

    $ rsync -av -delete -e 'ssh -p 12345' /ディレクトリ1 / [email protected]:/ディレクトリ2 /

    上のスクリーンショットからわかるように、ネットワーク経由でバックアップしたときの出力は、ローカルでバックアップしたときの出力とほとんど同じです。変更されるのは、使用するコマンドだけです。パスワードの入力を求められたことにも注目してください。これはSSHで認証するためのものです。 RSAキーを設定してこのプロセスをスキップすることもできます。これにより、rsyncの自動化も簡単になります。.

    rsyncバックアップの自動化

    CronをLinuxで使用して、rsyncなどのコマンドの実行を自動化することができます。 Cronを使用すると、Linuxシステムに毎晩​​バックアップを実行させることができます。.

    ログインしているユーザーのcronテーブルファイルを編集するには、次のコマンドを実行します。

    $ crontab -e

    このファイルを編集するには、viに精通している必要があります。挿入するには「I」と入力してから、cronテーブルファイルの編集を開始します。.

    Cronは次の構文を使用します。時、分、月の日、月の日、曜日、コマンド.

    最初は少し混乱するかもしれませんので、例を挙げましょう。次のコマンドは、毎晩午後10時にrsyncコマンドを実行します。

    0 22 * * * rsync -av --delete / Directory1 / / Directory2 /

    最初の「0」は時間の分を指定し、「22」は午後10時を指定します。このコマンドは毎日実行したいので、残りのフィールドにはアスタリスクを付けてからrsyncコマンドを貼り付けます。.

    Cronの設定が終わったら、エスケープキーを押してから「:wq」と入力し(引用符は含みません)、Enterキーを押します。これはあなたの変更をviに保存します。.

    Cronはこれよりはるかに詳細な情報を得ることができますが、それについて続けることはこのチュートリアルの範囲を超えています。ほとんどの人は、単純な毎週または毎日のバックアップがほしいと思うでしょう。 Cronの詳細については、manページを参照してください。.

    その他の便利な機能

    あなたができるもう一つの役に立つことはあなたのバックアップをzipファイルに入れることです。 zipファイルを配置する場所を指定してから、そのディレクトリをバックアップディレクトリにrsyncする必要があります。例えば:

    $ zip /ZippedFiles/archive.zip / Directory1 / && rsync -av --delete / ZippedFiles / / Directory2 /

    上記のコマンドは、Directory1からファイルを取り出し、それらを/ZippedFiles/archive.zipに入れてから、そのディレクトリーをDirectory2にrsyncします。最初は、zipファイルはほんのわずかな変更がファイルに加えられるたびに変わるので、この方法は大規模なバックアップには非効率的だと思うかもしれません。ただし、rsyncは変更されたデータのみを転送するため、zipファイルが10 GBの場合、Directory1にテキストファイルを追加すると、rsyncは追加されたものだけを認識し(zip形式でも)、数KBしか転送しません変更データ.

    rsyncバックアップを暗号化する方法はいくつかあります。最も簡単な方法は、ハードドライブ自体(ファイルのバックアップ先)に暗号化をインストールすることです。もう1つの方法は、ファイルをリモートサーバー(または他のハードドライブ)に送信する前に暗号化することです。これらのメソッドについては後の記事で説明します。.

    どのようなオプションや機能を選択しても、rsyncはこれまでで最も効率的で多用途のバックアップツールの1つであることが証明されています。さらに単純なrsyncスクリプトでもデータを失うことを防ぐことができます。.