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

Sysadminツール:rsyncを使用して、バックアップ、復元、およびファイル同期を管理します

システム管理者として、私は2つのことにエネルギーのほとんどを費やしています(コーヒーがあることを確認することを除いて):バックアップをとることを心配することと、物事を行うための最も簡単で最良の方法を見つけることです。両方の問題を解決するための私のお気に入りのツールの1つは、rsyncと呼ばれます。 。

Rsync Sambaを発明したのと同じ人の1人であるAndrewTridgellによって作成されました。これは非常に便利で柔軟なツールであるため、Linuxのすべてのバージョンに含まれており、他のオペレーティングシステムに移植されています。最も簡単に言えば、rsyncはファイルをコピーするためのツールです。ただし、それよりもはるかに強力です。

  • 2セットのファイルを最新の状態に保ち、同期します。
  • コマンドとして実行され、スクリプト化できます。
  • データストリームを圧縮および暗号化します。
  • 複数の種類のリモートアクセスクライアント(SSHやRSHなど)を使用します。

したがって、それが多くのシステム管理者のお気に入りであることは当然のことです。

基本

mvのように およびcp 最も基本的な形式のrsyncのコマンド ソースと宛先が必要なだけです:

[root@milo enable]# rsync ./foo/testfoo ./bar/

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:15 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:08 foo

./bar:
total 8
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4982446 -rw-rw-r-- 1 root       root       8 Jun 11 15:15 testfoo

./foo:
total 4
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

testfooをコピーしました barへ ディレクトリ。大したことではありません。

それでは、./fooにファイルを追加しましょう。 再同期:

[root@milo enable]# touch ./foo/bat.txt

[root@milo enable]# rsync ./foo/* ./bar/
[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:45 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:25 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root       0 Jun 11 15:45 bat.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4992604 -rw-rw-r-- 1 root       root       8 Jun 11 15:45 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root       0 Jun 11 15:25 bat.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

この時点で、いくつかの点に注意したいと思います。まず、rsyncを再実行したとき 、testfooを再コピーしました atimeを更新しました 。また、ファイルをコピーするたびに、ファイルに新しいinodeが与えられます。 番号。したがって、ファイルシステムに関する限り、それは完全に異なるファイルです(つまり、すべてをコピーしたためです。 毎回の情報)。最後に、rsyncの場合は注意してください ファイルの場合、所有権はコマンドを実行したユーザー(この場合はroot)に変更されます。

バックアップを作成する場合、これはすべて重要です。この動作は、cpと同じです。 指図。 cpを使用することもできます ディレクトリを再帰的にコピーし、属性と所有権を保持するコマンド。大きな違いは、rsync ファイルのチェックサムを実行し、ソースファイルと宛先ファイルを比較できます。ここでcp atimeを見るだけです 価値。 Rsync の追加機能は、バックアップの整合性を維持するのに役立ちます(このシリーズの後半で整合性について説明します)。

それでは、これらのファイルの1つだけを更新して、rsyncが何であるかを見てみましょう。 する:

[root@milo enable]# echo 'this is new text'>>./foo/testfoo
 
[root@milo enable]# ls -al ./foo
 
-rw-rw-r-- 1 skipworthy skipworthy   25 Jun 11 16:13 testfoo

[root@milo enable]# rsync -aruv ./foo/* ./bar/
sending incremental file list
testfoo

sent 194 bytes  received 35 bytes  458.00 bytes/sec
total size is 25  speedup is 0.11

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 16:16 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:56 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4998080 -rw-r--r-- 1 root       root        0 Jun 11 15:56 footoo.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy  0 Jun 11 15:56 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

今回はいくつかのスイッチを使用したことに注意してください:

  • -a アーカイブモード、mtimeを保持 、権限とシンボリックリンク。
  • -r 再帰モード。任意のディレクトリにドリルダウンして同期します(-aと冗長にする必要があります) スイッチですが、とにかく常に指定します。
  • -u mtimeの場合にのみファイルを更新します ソースの方が新しいです。
  • -v 冗長モードは、それが何をしているのかを教えてくれます(何が起こっているのかを監視できるのはいつでもいいことです。もう1つの便利なトリックは、この出力をファイルにパイプして後で確認することです)。

rsyncでファイルを復元する

それでは、数週間後のふりをしましょう。 CFOが電話をかけて、何かがおかしいと言います。彼の/fooディレクトリから多くのファイルが欠落しています。

./foo:
total 8
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

バックアップを調べて、不足しているファイルを確認します:

./bar:
total 12
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4994298 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994359 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994367 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994374 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994413 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

簡単なrsync 復元:

[root@milo enable]# rsync -aruv ./bar/* ./foo
sending incremental file list
bat.txt
laterfiles1.txt
laterfiles2.txt
laterfiles3.txt
laterfiles4.txt
testbar

そして:

./foo:
total 12
4994387 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994562 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994564 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994565 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994567 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
4994579 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

欠落しているファイルは、最新のバックアップから復元または更新されますが、変更されていない既存のファイルはそのまま残されます。また、footoo.txtの所有権にも注意してください 保存されました。

まとめ

rsyncのマニュアルページを(いつものように)見てみることをお勧めします。 、この便利なコマンドを試してみてください。

考慮すべきその他のスイッチは次のとおりです。

  • -r (再帰的)
  • -b (バックアップ)
  • -R (相対)
  • -u (更新-変更されたファイルのみをコピーします)
  • -P (進捗状況)
  • -c (圧縮)
  • -p (権限を保持する)

このシリーズの次の記事では、もう少し進んで、リモートのrsyncについて見ていきます。 およびこのコマンドの他のより高度な機能のいくつか。

[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]


Linux
  1. systemdを使用してスタートアップを管理する

  2. LinuxでSVNリポジトリをバックアップおよび復元する方法

  3. PostgreSQLでデータベースをバックアップおよび復元する方法

  1. Ansibleガイド:Ansibleを使用してファイルを管理する

  2. MySQL:mysqldumpを使用してデータベースをバックアップ(ダンプ)および復元する方法

  3. 不正なバックアップ/復元後の Linux ext4 復元ファイルとディレクトリのアクセス権

  1. 新しくインストールしたLinuxシステムでMackupを使用してアプリケーション設定をバックアップおよび復元する方法

  2. コマンドラインを使用してMySQLデータベースをバックアップおよび復元する方法

  3. mysqlhotcopy を使用した MySQL データベースのバックアップと復元