rsyncでリモートファイルのコピーをします。
コピー元は、ローカルの、/home/takk/srcディレクトリ
コピー先は、リモートの、takk@xxxxxx:/home/takk/destディレクトリ
前回と同じく、初めにコピー元のファイルを生成します。
~$ mkdir src ~/src$ seq 30 | perl -ne 'print chr' | split -db10 ~/src$ stat -c'%n %y' * x00 2016-08-07 22:32:51.798269497 +0900 x01 2016-08-07 22:32:51.798269497 +0900 x02 2016-08-07 22:32:51.798269497 +0900 ~/test$
ローカルからrsyncコマンドでリモートへファイルコピー。
~/src$ rsync -r . takk@xxxxxx:/home/takk/dest ~/src$
リモート側にコピーされました。
takk@xxxxxx:~$ cd dest takk@xxxxxx:~/dest$ stat -c'%n %y' * x00 2016-08-07 23:09:21.501973064 +0900 x01 2016-08-07 23:09:21.501973064 +0900 x02 2016-08-07 23:09:21.501973064 +0900 takk@xxxxxx:~/dest$
ローカルでのrsyncの使い方と同様に、-uオプションで更新されたファイルのみコピーできます。また、ローカルでのファイル削除にも–deleteオプションで対応できます。
~/src$ touch x00 ~/src$ rm x02 ~/src$ stat -c'%n %y' * x00 2016-08-07 23:10:10.874229712 +0900 x01 2016-08-07 22:32:51.798269497 +0900 ~/src$ rsync -ru --delete . takk@xxxxxx:/home/takk/dest takk@xxxxxx's password: ~/src$
リモート側。
takk@xxxxxx:~/dest$ stat -c'%n %y' * x00 2016-08-07 23:11:37.006865478 +0900 x01 2016-08-07 23:09:21.501973064 +0900 takk@xxxxxx:~/dest$
サイズの大きいファイルで確認してみましょう。rsyncに-vを指定して、コピー状況を確認します。
ロカール側で、78MByteぐらいのファイルaを生成して、リモートへコピーしてみます。
~/src$ rm * ~/src$ seq 9999999 > a ~/src$ stat a File: `a' Size: 78888888 Blocks: 154080 IO Block: 4096 通常ファイル Device: 801h/2049d Inode: 7745799 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1001/ takk) Gid: ( 1001/ takk) Access: 2016-08-07 23:37:13.558200879 +0900 Modify: 2016-08-07 23:37:14.666200859 +0900 Change: 2016-08-07 23:37:14.666200859 +0900 Birth: - ~/src$ time rsync -ruv --delete . takk@xxxxxx:/home/takk/dest takk@xxxxxx's password: sending incremental file list a sent 78,908,250 bytes received 35 bytes 6,312,662.80 bytes/sec total size is 78,888,888 speedup is 1.00 real 0m12.075s user 0m1.144s sys 0m0.320s ~/src$
パスワード入力を合わせて、コピーに12秒かかりました。
リモート側はどうなっているでしょうか。
takk@xxxxxx:~/dest$ stat * File: 'a' Size: 78888888 Blocks: 154080 IO Block: 4096 regular file Device: fd01h/64769d Inode: 2097585 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1201/ takk) Gid: ( 1201/ takk) Access: 2016-08-07 23:44:05.223612886 +0900 Modify: 2016-08-07 23:44:11.963656798 +0900 Change: 2016-08-07 23:44:11.963656798 +0900 Birth: - takk@xxxxxx:~/dest$
ローカルのファイルと同じサイズのファイルができていますね。
一旦リモートへファイルがコピーされると、再びrsyncをしても差分で済むのですぐに終わります。かかる時間の大半はパスワードの入力時間だけです。
~/src$ time rsync -ruv --delete . takk@xxxxxx:/home/takk/dest takk@xxxxxx's password: sending incremental file list sent 63 bytes received 12 bytes 21.43 bytes/sec total size is 78,888,888 speedup is 1,051,851.84 real 0m3.325s user 0m0.024s sys 0m0.008s ~/src$
ローカル側のaファイルを一部修正してrsyncを使ってみます。
~/src$ echo HELLO >> a ~/src$ md5sum a 04fb87507c5ba70f10a60e6e5b2751db a ~/src$ time rsync -ruv --delete . takk@xxxxxx:/home/takk/dest takk@xxxxxx's password: sending incremental file list a sent 43,495 bytes received 62,223 bytes 19,221.45 bytes/sec total size is 78,888,894 speedup is 746.22 real 0m5.164s user 0m0.364s sys 0m0.040s ~/src$
転送サイズは、実際のファイル差分よりも大きいですね。
リモート側を見てみます。
takk@xxxxxx:~/dest$ stat * File: 'a' Size: 78888894 Blocks: 154080 IO Block: 4096 regular file Device: fd01h/64769d Inode: 2097586 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1201/ takk) Gid: ( 1201/ takk) Access: 2016-08-07 23:54:46.307791197 +0900 Modify: 2016-08-07 23:51:01.474325483 +0900 Change: 2016-08-07 23:51:01.482325536 +0900 Birth: - takk@xxxxxx:~/dest$ md5sum a 04fb87507c5ba70f10a60e6e5b2751db a takk@xxxxxx:~/dest$
コピーされています。ファイルの内容もローカルと一致しました。
コメント