Linuxでディレクトリの内容を同期する!(rsync)

Linuxで、rsyncコマンドを使用して、ディレクトリの内容を同期します。

ディレクトリとファイルを作成する!

同期元のディレクトリとファイルを作成します。

$ mkdir docs
$ touch docs/text1.txt
$ ls -lR docs
docs/:
total 0
-rw-r--r--. 1 usradmin usradmin 0 Sep 13 07:10 text1.txt

ディレクトリの内容のコピーを行う!

ディレクトリの内容をコピーします。ディレクトリの内容のバックアップを取得する場合は、「-a」オプションを使用します。「-v」は、詳細表示のオプションです。

$ rsync -av docs backup
sending incremental file list
created directory backup
docs/
docs/text1.txt

sent 145 bytes  received 68 bytes  426.00 bytes/sec
total size is 0  speedup is 0.00
$ ls -lR backup
backup:
total 0
drwxr-xr-x. 2 usradmin usradmin 23 Sep 13 07:10 docs

backup/docs:
total 0
-rw-r--r--. 1 usradmin usradmin 0 Sep 13 07:10 text1.txt

追加分のみコピーする!

「-u」オプションを使用して、追加分のみコピーします。

$ touch docs/text2.txt
$ rsync -auv docs backup
sending incremental file list
docs/
docs/text2.txt

sent 170 bytes  received 39 bytes  418.00 bytes/sec
total size is 0  speedup is 0.00
$ ls -lR backup
backup:
total 0
drwxr-xr-x. 2 usradmin usradmin 40 Sep 13 07:15 docs

backup/docs:
total 0
-rw-r--r--. 1 usradmin usradmin 0 Sep 13 07:10 text1.txt
-rw-r--r--. 1 usradmin usradmin 0 Sep 13 07:15 text2.txt

圧縮機能を使用してコピーする!

「-z」オプションを使用して、圧縮してコピーします。圧縮は、コピー中のみです。

$ dd if=/dev/zero of=docs/text3.txt bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0282156 s, 3.7 GB/s
$ rsync -auzv docs backup
sending incremental file list
docs/
docs/text3.txt

sent 3,406 bytes  received 39 bytes  2,296.67 bytes/sec
total size is 104,857,600  speedup is 30,437.62
$ ls -lR backup
backup:
total 0
drwxr-xr-x. 2 usradmin usradmin 57 Sep 13 07:18 docs

backup/docs:
total 102400
-rw-r--r--. 1 usradmin usradmin         0 Sep 13 07:10 text1.txt
-rw-r--r--. 1 usradmin usradmin         0 Sep 13 07:15 text2.txt
-rw-r--r--. 1 usradmin usradmin 104857600 Sep 13 07:18 text3.txt

削除も反映して完全同期する!

「--delete」オプションを使用すると、削除も反映されてディレクトリの内容が完全に同期されます。

$ rm docs/text3.txt
$ rsync -auv --delete docs backup
sending incremental file list
deleting docs/text3.txt
docs/

sent 127 bytes  received 34 bytes  322.00 bytes/sec
total size is 0  speedup is 0.00
$ ls -lR backup
backup:
total 0
drwxr-xr-x. 2 usradmin usradmin 40 Sep 13 07:20 docs

backup/docs:
total 0
-rw-r--r--. 1 usradmin usradmin 0 Sep 13 07:10 text1.txt
-rw-r--r--. 1 usradmin usradmin 0 Sep 13 07:15 text2.txt

リモートのマシンにディレクトリの内容を同期する!

$ rsync -auv --delete docs usradmin@dpc001p1:/home/usradmin/backup
The authenticity of host 'dpc001p1 (10.1.1.1)' can't be established.
ED25519 key fingerprint is SHA256:wkIZB1feFgnpu4wuhd20fhHalln6ykab+FTgEUoJH3A.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'dpc001p1' (ED25519) to the list of known hosts.
usradmin@dpc001p1's password: 
sending incremental file list
created directory /home/usradmin/backup
docs/
docs/text1.txt
docs/text2.txt

sent 213 bytes  received 102 bytes  23.33 bytes/sec
total size is 0  speedup is 0.00

おわりに

rsyncコマンドを使用すると、ディレクトリの内容の同期を容易に行うことができます。リモートのマシンへもディレクトリの内容の同期を行うことができるので、バックアップにも使用することができます。

関連記事