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化出来そうです。


この記事を読んだ方はこんな記事にも興味を持っています

About romezo/dave

インターネットサーバ構築、サイトデザインなどを始めて早10数年。 オープンソースソフトウェアに魅了された事をきっかけにインターネットの世界へ。 始めて触ったオープンソースソフトウェアは印刷を勉強するきっかけにもなったTeX。文字組にはうるさい。 あることをきっかけにメディアに関わるようになり、メディアとネットの融合を真剣に考える。業務用サイトは http://www.mt-design.info/