Linux rsyncコマンドの使い方の詳細
9206 ワード
文書ディレクトリ
Linux rsyncコマンドの使い方の詳細
Linuxシステムでは、データバックアップのツールが多く、tar、cpio、ddコマンドについて説明したほか、このセクションでは、rsyncというデータバックアップ用のコマンドについて説明します.
文字通りrsyncはremote sync(リモート同期)と理解できるが、リモート同期データ(scpコマンドと同様)だけでなく、ローカル同期データ(cpコマンドと同様)も可能である.cpやscpと異なる点は、rsyncコマンドを使用してデータをバックアップする場合、以前のデータ(データがすでに存在する場合)を直接上書きするのではなく、既存のデータと新しいデータの違いを先に判断し、データが異なる場合にのみ異なる部分を上書きすることです.システムがrsyncコマンドを学習する前に、Linuxシステムにこのコマンドがインストールされていることを確認してください.そうでない場合はyum install-y rsyncコマンドを直接使用してインストールできます.
rsyncの使い方を説明する前に、このコマンドについて全体的な認識を持たせるために、ここで例を挙げます.[root@localhost ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
sent 34 bytes received 15 bytes 98.00 bytes/sec
total size is 1432 speedup is 29.22
この例ではrsyncコマンドを実行することにより、/etc/passwdファイルを/tmp/ディレクトリにローカルに同期し、名前を1に変更することが実現される.txt.
またrsyncコマンドは、リモート同期データ、すなわちローカルのデータをリモートマシンにバックアップすることもサポートします.たとえば、リモートマシンのIPアドレスが192.168.188.128であることを知っています.rsyncコマンドを使用してpasswdファイルをバックアップする実行コマンドは、次のとおりです.[root@localhost ~]# rsync -av /etc/passwd 192.168.188.128:/tmp/1.txt
The authenticity of host '192.168.188.128 (192.168.188.128)' can't be established.
ECDSA key fingerprint is 26:e3:97:e7:bb:ae:17:33:ea:aa:Oc:5f:37:Oe:9e:fa.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.l68.l88.l28' (ECDSA) to the list of known hosts.
[email protected]'s password:
最初のリモート接続では、接続を続行するかどうかを示すメッセージが表示されるので、yesを入力します.また、接続が正常に確立されると、ターゲットシステムのrootパスワードを入力する必要があります.
以上の2つの例から、読者は「rsyncはローカルバックアップデータもリモートバックアップデータもサポートする」ことを直感的に認識できるはずです.では、rsyncコマンドはどのように使用しますか?
rsyncコマンドの基本フォーマットは、次のとおりです.[root@localhost ~]# rsync [OPTION] SRC DEST
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST:DEST
[root@localhost ~]# rsync [OPTION] [USER@]HOST:SRC DEST
[root@localhost ~]# rsync [OPTION] [USER@]HOST::SRC DEST
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST::DEST
以上の5つのコマンドフォーマットに対してrsyncには5つの異なる動作モードがあります.1つ目は、ローカルでのみデータをバックアップするために使用されます.2つ目は、ローカルデータをリモートマシンにバックアップするためのものです.3つ目は、リモートマシン上のデータをローカルマシンにバックアップするためのものです.第4種と第3種は相対的であり、同様に第5種と第2種は相対的であり、それぞれの違いは登録認証時に使用される検証方式が異なることである.
rsyncを使用すると、リモートでデータ(バックアップデータ)を転送する前に、sshプロトコルまたはrsyncプロトコルを使用してログイン認証を行う必要があることを知っておく必要があります.rsyncコマンドで、単一のコロン(:)を使用する場合、デフォルトではsshプロトコルが使用されます.逆に、2つのコロン(:)を使用する場合はrsyncプロトコルを使用します.sshプロトコルとrsyncプロトコルの違いは、rsyncプロトコルは使用時に追加の構成が必要であり、ワークロードが増加するが、より安全であることである.逆にsshプロトコルは使いやすく、構成する必要はありませんが、サーバのパスワードが漏れるリスクがあります.
また、上記のフォーマットの各パラメータの意味は、SRC:バックアップするターゲットデータの位置(パス)を表すために使用される.DEST:データをどこにバックアップするかを示すために使用されます.USER@:リモート同期として使用する場合は、システムログインのユーザー名を指定し、指定が表示されない場合は、デフォルトでrootとしてシステムにログインし、同期操作を完了します.
rsyncコマンドが提供するOPTIONおよび機能を表1に示す.
*表1 rsyncオプションおよび機能
OPTIONオプション
機能
-a
これは、ファイルを再帰的に転送し、-r、-l、-p、-t、-g、-o、-Dオプションに等しいすべてのプロパティを保持するアーカイブモードです.-aオプションの後に、-r、-l、-p、-t、-g、-o、-Dのいずれかを閉じることを示す--no-OPTIONが付いてもよく、例えば-a--no-lは-r、-p、-t、-g、-o、-Dオプションに等しい.
-r
サブディレクトリを再帰モードで処理することを示します.主にディレクトリに対して、1つのファイルを単独で転送する場合は-rオプションを追加する必要はありませんが、ディレクトリを転送する場合は追加する必要があります.
-v
ファイルリスト、ファイル数など、いくつかの情報を印刷します.
-l
ソフト接続を保持することを示します.
-L
通常のファイルのようにソフト接続を処理することを示します.SRCにソフト接続ファイルがある場合は、このオプションを加えると、ソフト接続が指すターゲットファイルがDESTにコピーされます.
-p
ファイル権限を保持していることを示します.
-o
ファイルの所有者情報を保持することを示します.
-g
ファイルのグループ情報を保持することを示します.
-D
保持デバイスファイル情報を表します.
-t
保持ファイル時間情報を表します.
–delete
DESTにSRCがないファイルを削除することを示します.
–exclude=PATTERN
転送する必要のないファイルを除外することを指定します.等号の後ろにファイル名が付いています.ワイルドカードモード(*.txtなど)でもかまいません.
–progress
同期するファイルの数の統計、同期するファイルの転送速度など、同期中に同期が表示されるプロセスのステータスを示します.
-u
SRCよりも新しいファイルをDESTから除外して上書きしないことを示します.
-z
このオプションを加えると、転送中に圧縮されます.
以上はasyncコマンドでよく使われるいくつかのオプションをリストしたものにすぎません.初心者にとって、-a、-v、-z、-delete、--excludeなど、最もよく使われるいくつかを覚えておけばいいです.asyncが提供するすべてのオプションを表示する場合は、asyncコマンドを直接実行します.
各オプションの機能をよりよく表示するには、次のコマンドを実行する準備が必要です.# rsync
[root@localhost ~]# mkdir rsync
[root@localhost ~]# cd rsync
# rsync , test1
[root@localhost rsync]# mkdir test1
[root@localhost rsync]# cd test1
# test1 , 1、2、3、/root.123.txt
[root@localhost test1]# touch 1 2 3 /root/123.txt
[root@localhost test1]# ln -s /root/123.txt ./123.txt
[root@localhost test1]# ls -l
total 0
-rw-r--r--. 1 root root 0 0ct 23 07:34 1
lrwxrwxrwx. 1 root root 13 0ct 23 08:34 123.txt -> /root/123.txt
-rw-r--r--. 1 root root 0 0ct 23 07:34 2
-rw-r--r--. 1 root root 0 0ct 23 07:34 3
[root@localhost test1]# cd ..
# rsync
[root@localhost rsync]#
その上で、一般的なOPTIONオプションをいくつか選び、その使い方を例に挙げて説明します.
rsync-aオプション
まず-aオプションの使い方を見てみましょう.以下に示します.[root@localhost rsync]# rsync -a test1 test2
[root@localhost rsync]# ls test2
test1
[root@localhost rsync]# ls test2/test1/
1 123.txt 2 3
ここで質問ですが、test 1ディレクトリの内容をtest 2ディレクトリに直接配置しようとしたのですが、rsyncコマンドでtest 2ディレクトリを新規作成し、test 1をtest 2に配置しました.
test 1ディレクトリの内容をtest 2ディレクトリに直接バックアップするには、次のコマンドを変更します.[root@localhost rsync]#rm -rf test2
[root@localhost rsync]# rsync -a test1/ test2/
[root@localhost rsync]# ls test2/
1 123.txt 2 3
test 1とtest 2ディレクトリに/スラッシュを追加するだけで済みます.
前述したように、-aオプションを使用することは、-r、-l、-p、-t、-g、-o、-Dオプションを同時に使用することに等しく、-aは--no-OPTIONと併用することもできる.次に、-lオプションの役割を見てみましょう.[root@localhost rsync]# rm -rf test2
[root@localhost rsync]# rsync -av test1/ test2/
sending incremental file list
created directory test2
./
1
skipping non-regular file "123.txt"
2
3
sent 200 bytes received 72 bytes 544.00 bytes/sec
total size is 13 speedup is 0.05
ここで-vオプションを使用すると、コピー中に非通常ファイル123がスキップすることがわかる.txt,実は123.txtはソフトリンクファイルであり、-lオプションを使用しないとソフトリンクファイルは無視されます.
rsync--deleteオプション
表1に示すように、–deleteオプションは、DESTにSRCがないファイルを削除するために使用されます.例:# test1
[root@localhost rsync]# rsync -a test1/ test2
# test1/123.txt
[root@localhost rsync]# rm -f test1/123.txt
[root@localhost rsync]# ls test1/
1 2 3
[root@localhost rsync]# rsync -av test1/ test2/
sending incremental file list
./
sent 55 bytes received 15 bytes 140.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost rsync]# ls test2/
1 123.txt 2 3
test 1ディレクトリに対して123が削除することがわかる.txtファイルの後、test 2ディレクトリの123を再バックアップする.txtファイルは任意の影響を及ぼします.
次のように、--deleteオプションを使用してコピーコマンドを再実行します.[root@localhost rsync]# rsync -av --delete test1/ test2/
sending incremental file list
deleting 123.txt
sent 52 bytes received 12 bytes 128.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost rsync]# ls test2/
1 2 3
--deleteオプションを使用してデータをバックアップする場合、test 1ディレクトリが変更されると、test 2も変更されます.
それだけでなく、DESTにファイルを追加し、SRCにファイルが含まれていない場合は、--deleteオプションを使用して同期バックアップ操作を行うと、DESTに追加されたファイルが削除されます.例:[root@localhost rsync]# touch test2/4
[root@localhost rsync]# ls test1/
1 2 3
[root@localhost rsync]# ls test2/
1 2 3 4
[root@localhost rsync]# rsync -a --delete test1/ test2/
[root@localhost rsync]# ls test2/
1 2 3
紙面の制限を受け、rsyncコマンドの他のオプションの使い方については、このセクションでは具体的な例は示されず、興味のある読者は自分でコードを書いてテストすることができます.
[root@localhost ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
sent 34 bytes received 15 bytes 98.00 bytes/sec
total size is 1432 speedup is 29.22
[root@localhost ~]# rsync -av /etc/passwd 192.168.188.128:/tmp/1.txt
The authenticity of host '192.168.188.128 (192.168.188.128)' can't be established.
ECDSA key fingerprint is 26:e3:97:e7:bb:ae:17:33:ea:aa:Oc:5f:37:Oe:9e:fa.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.l68.l88.l28' (ECDSA) to the list of known hosts.
[email protected]'s password:
[root@localhost ~]# rsync [OPTION] SRC DEST
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST:DEST
[root@localhost ~]# rsync [OPTION] [USER@]HOST:SRC DEST
[root@localhost ~]# rsync [OPTION] [USER@]HOST::SRC DEST
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST::DEST
# rsync
[root@localhost ~]# mkdir rsync
[root@localhost ~]# cd rsync
# rsync , test1
[root@localhost rsync]# mkdir test1
[root@localhost rsync]# cd test1
# test1 , 1、2、3、/root.123.txt
[root@localhost test1]# touch 1 2 3 /root/123.txt
[root@localhost test1]# ln -s /root/123.txt ./123.txt
[root@localhost test1]# ls -l
total 0
-rw-r--r--. 1 root root 0 0ct 23 07:34 1
lrwxrwxrwx. 1 root root 13 0ct 23 08:34 123.txt -> /root/123.txt
-rw-r--r--. 1 root root 0 0ct 23 07:34 2
-rw-r--r--. 1 root root 0 0ct 23 07:34 3
[root@localhost test1]# cd ..
# rsync
[root@localhost rsync]#
[root@localhost rsync]# rsync -a test1 test2
[root@localhost rsync]# ls test2
test1
[root@localhost rsync]# ls test2/test1/
1 123.txt 2 3
[root@localhost rsync]#rm -rf test2
[root@localhost rsync]# rsync -a test1/ test2/
[root@localhost rsync]# ls test2/
1 123.txt 2 3
[root@localhost rsync]# rm -rf test2
[root@localhost rsync]# rsync -av test1/ test2/
sending incremental file list
created directory test2
./
1
skipping non-regular file "123.txt"
2
3
sent 200 bytes received 72 bytes 544.00 bytes/sec
total size is 13 speedup is 0.05
# test1
[root@localhost rsync]# rsync -a test1/ test2
# test1/123.txt
[root@localhost rsync]# rm -f test1/123.txt
[root@localhost rsync]# ls test1/
1 2 3
[root@localhost rsync]# rsync -av test1/ test2/
sending incremental file list
./
sent 55 bytes received 15 bytes 140.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost rsync]# ls test2/
1 123.txt 2 3
[root@localhost rsync]# rsync -av --delete test1/ test2/
sending incremental file list
deleting 123.txt
sent 52 bytes received 12 bytes 128.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost rsync]# ls test2/
1 2 3
[root@localhost rsync]# touch test2/4
[root@localhost rsync]# ls test1/
1 2 3
[root@localhost rsync]# ls test2/
1 2 3 4
[root@localhost rsync]# rsync -a --delete test1/ test2/
[root@localhost rsync]# ls test2/
1 2 3