PR

[Linux] SCP と rsync+SCP

十分に信頼できるディスクがネットワークの何処かにあれば良いのだが、あいにく持ち合わせいない。すべからくマスターサーバーとスレーブサーバーが存在する。これらのサーバーにはVMwareServer2 がインストールされているが、データーソースはそういった理由で独立している。

小さなネットワーク構成だからマスターサーバーをメンテナンスするときはルータの設定を書き換え、スレーブサーバーのIP アドレスを指定する。スレーブサーバーには単にApache が走っているだけのサーバーがあり、すべての応答にこれがメンテナンス中である旨返答する。

ReadyNASがとても魅力的なのだがなかなか手が出ない。もしReadyNAS が居たらVMwareServer2 のデータソースに指定して、すこしばかりのダウンタイム(マスターを落としてスレーブで起動する)で継続できるし、データベースの実態もそこに置けば面白い運用ができる。NAS は設置されているが速度や信頼性などの理由でVMwareServer2 とは関連を持っていない。

せっかくのスレーブサーバーだから、もう少し活用したい。活用方法は単純で、マスターサーバーのデータソースを受け入れればいい。そうすればメンテナンス前にバックアップを取ることができ、異なる物理ストレージにデータが存在するから故障時にも少しはマシだ。以前はARAIDを使っていた。これはとても便利。

前置きが長くなったが、ここではSCP やrsync による転送方法をメモしておく。

スポンサードリンク

構成例

マスターサーバーとスレーブサーバーの構成は同じで、ホストOS にUbuntu 10.04 LTS 、その上でVMwareServer2 が動作している。

マスターサーバー

  • ホストOS Ubuntu Server 10.04 LTS x64
  • VMwareServer2

スレーブサーバー

  • ホストOS Ubuntu Server 10.04 LTS x86
  • VMwareServer2

SCP 転送

コマンド

$sudo scp -r /var/lib/vmware/Virtual\ Machines/ [email protected]:/home/casey

sudo なのは、VMwareServer2 がroot 権限でファイルを作成するから。続くscp はssh でのファイル転送コマンド。オプション-r はディレクトリを再帰的に。引数はファイルの場所。

[email protected]:/home/casey の [email protected] は、転送先のユーザ名@接続先IP アドレス。/home/casey は転送場所。この場合、192.168.1.24 にユーザーcasey で接続し、そのホームディレクトリにファイルを転送する。

ちなみに問答無用で上書きだそう。それからscp: ambiguous target はおそらく権限等の問題と思われるので、別の場所に変更するか権限を設定する。

操作例


Linux vm130 2.6.35-28-server #49-Ubuntu SMP Tue Mar 1 14:55:37 UTC 2011 x86_64 GNU/Linux
Ubuntu 10.10

casey@vm130:~$ sudo scp -r /var/lib/vmware/Virtual\ Machines/ [email protected]:/var/lib/vmware/Virtual\ Machines/
The authenticity of host '192.168.1.24 (192.168.1.24)' can't be established.
RSA key fingerprint is fb:eb:bf:90:e9:21:7c:cf:82:9b:fe:0b:2e:0e:22:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.24' (RSA) to the list of known hosts.
[email protected]'s password:
scp: ambiguous target

casey@vm130:~$ sudo scp -r /var/lib/vmware/Virtual\ Machines/ [email protected]:/home/casey
[email protected]'s password:
testWinME.vmsd                                100%    0     0.0KB/s   00:00
testWinME.vmx                                 100% 1304     1.3KB/s   00:00
testWinME.vmxf                                100%  264     0.3KB/s   00:00
testWinME.vmdk                                100%  759MB  39.9MB/s   00:19
testWinME.nvram                               100% 8684     8.5KB/s   00:00
 :
 :
WinXPSubClient.vmsd                           100%    0     0.0KB/s   00:00
WinXPSubClient.nvram                          100% 8684     8.5KB/s   00:00
WinXPSubClient.vmxf                           100%  269     0.3KB/s   00:00


rsync + ssh 転送

コマンド

$ sudo rsync -avz --delete --progress -e ssh /var/lib/vmware/Virtual\ Machines/ [email protected]:/home/casey/tmp

rsync -avz –delete –progress はこちらを参照

sudo の理由や -e ssh /var/lib/vmware/Virtual\ Machines/ [email protected]:/home/casey/tmp はSCP と同じ。

※SCP に比べると rsync は高機能だから、更新されたファイルだけ転送したり、更新元で削除されたファイルを転送先からも削除する同期処理をしたりできる。が、SCP に比べ転送速度が遅かった。

操作例

casey@vm130:~$ sudo rsync -avz --delete --progress -e ssh /var/lib/vmware/Virtual\ Machines/ [email protected]:/home/casey/tmp
[email protected]'s password:
sending incremental file list
WinXPSubClient/
WinXPSubClient/564d5e87-dcf2-b8e2-1aa8-c31d6244b8b1.vmem
 402653184 100%    9.17MB/s    0:00:41 (xfer#64, to-check=65/153)
WinXPSubClient/WinXPSubClient.nvram
 8684 100%   10.43kB/s    0:00:00 (xfer#65, to-check=64/153)
WinXPSubClient/WinXPSubClient.vmdk
 7104299008 100%    7.49MB/s    0:15:05 (xfer#66, to-check=63/153)
WinXPSubClient/WinXPSubClient.vmsd
 0 100%    0.00kB/s    0:00:00 (xfer#67, to-check=62/153)
WinXPSubClient/WinXPSubClient.vmx
 1350 100%   33.80kB/s    0:00:00 (xfer#68, to-check=61/153)
WinXPSubClient/WinXPSubClient.vmxf
 269 100%    5.25kB/s    0:00:00 (xfer#69, to-check=60/153)
WinXPSubClient/564d5e87-dcf2-b8e2-1aa8-c31d6244b8b1.vmem.lck/M54373.lck
 512 100%    8.62kB/s    0:00:00 (xfer#70, to-check=57/153)
WinXPSubClient/WinXPSubClient.vmdk.lck/M22992.lck
 512 100%    7.81kB/s    0:00:00 (xfer#71, to-check=56/153)
sent 22315612181 bytes  received 2423 bytes  4245337.13 bytes/sec
total size is 70741693904  speedup is 3.17
rsync warning: some files vanished before they could be transferred (code 24) at main.c(1060) [sender=3.0.7]


おまけ

上記例なら、転送先で以下を行えばマスターサーバーのデータがスレーブサーバーにもコピーされる。基本的にバックアップ目的なので起動するつもりはないが、起動するなら転送先(スレーブサーバー)のVMwareServer2 でインベントリに追加しておく。


casey@vm132:~$ cd tmp/
casey@vm132:~/tmp$ mv ./* /var/lib/vmware/Virtual\ Machines/


※常にスレーブサーバーが起動しているわけではないので、自動化処理はここでは触れない
※操作例にはテスト端末(Ubuntu Server 10.10 、 11.04 )のものが含まれているかもしれない

参考文献

  • rsyncとsshで別のマシンにバックアップ
  • scp サーバ間で情報をコピーする | Linux | 『Weblogy』
  • scp ネットワーク・ホスト間SSH暗号化ファイル転送 – Linuxコマンド|MAKIZOU.COM

コメント