No Image

ftpで再帰的にファイル取得 / wget編

「wget編」と書きましたが、これが恐らくいちばん便利なので、他のはないかと思います・・・
サーバを移設するに当たり、大量のWebデータなどをどうしようかと悩んでいました。
圧縮して転送・・・を繰り返していたのですが、一部には大容量のデータが置かれている模様。
圧縮だけで数十分が経過しますし、そういうデータの多くは圧縮しても容量が変わりません。
かといって、SCPが簡単に使える環境でもなく(鍵認証+パスワードなのです)、たどり着いたのがこの方法です。
wgetでftpが使えることを知らなかった私。
今更ながらコマンドを見直してみました。
私がやりたいことは、旧サーバのデータを新サーバに移動したい。但し、フォルダ構成・パーミッションはそのままで、というもの。
この場合、

wget -mckb –passive-ftp –preserve-permissions ftp://旧サーバのユーザ名:パスワード@旧サーバのIPアドレス/転送したいフォルダ名

となります。
ちなみにこの場合のオプションは

m : ミラーリングに適したオプションで動作
 ミラーリングに適したオプションとは
  -r : 再帰的に転送します
  -N : ローカルより古いファイルは転送しない
  -l : ( Lの小文字) 再帰する深さを指定(この場合は無制限)
c : 既にあるファイルの続きから転送を行う
k : 非相対リンクを相対リンクに変換
b : バックグラウンドで実行します

バックグラウンドで実行する、を指定すると、実行したディレクトリ上に”wget-log”というファイルを作成し、このファイル内に進捗を書き込んでいきます。
これを使えば、ディレクトリのミラーリングなどは簡単にcron化出来そうです。

Share this post