システム管理者として、私は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の技術概要。 ]