ファイルの転送でSCPを使って失敗した話
という訳で某案件で、システムの移行を行ったわけですよ。
システムの移行にあたっては、データの移行ってのが付き物ですよね?
その際のお話です。
最初の計画
データの移行にあたって、要件としてデータベースと画像ファイルの移行があります。
サーバ自体も移行をするためこれらのデータのサーバ間の移行が必要でした。
その際に、初めはファイルを保存しているディレクトリごとtarで固めて送る予定だったのですが・・・
おせぇ・・・全然おわんねぇ・・・
というのも旧サーバが大分死にかけでサーバ自体を移行する必要が有る状態だったためだったりします・・・
という訳で
そうだ!もう圧縮とかせずにSCPで送っちゃおう!
つーわけでscp -r
でディレクトリごと転送しました。
まぁ普通ならこれで全ファイル問題なく移行できますよね?普通なら
起きたこと
何故か一部ファイルだけ転送されてねぇ・・・
一部ファイルなので自分で確認した際には特に問題が見当たらず、お客様からのご指摘で判明した次第です・・・。
しかも、再度移行しようとtarで固めようとしたらディスクエラーが出てread onlyになったあげく、諦めて再起動かけようと思ってもなぜかshutdown - r now
を打って、REBOOT!
って出てくるのにいっちょん再起動せんしなんなのなんなの!
ま、最終的には、DBに保存されている画像情報を利用して不足分の画像を抽出して1個ずつSCPで取ってくることで何とか事なきを得ました。
反省
はじめて知ったんですが、SCPってファイルの欠損とかが起こる可能性とかあるらしいですね。(参考)
普通にやる分には問題ないと思うし、こういった問題が出たことはなかったのですが、移行元のサーバが死にかけだったせいか転送出来ていなかったファイルがあったみたいです。
(因みに2,3万程度のファイル中、約50ファイルが移行先で不足していました)
- SCP転送後は、ファイル数にズレがないか確認をすること。(全部送れてる前提にしない)
- しっかり転送を保証したい場合は、rsyncやsftpコマンドを利用した方が良いよね!(でも、このサーバイントラだったおかげでrsyncとかインストールできなかった・・・)