FTPソフトに関する質問です。
フォルダの中に11万のファイルがあり
容量は460MBです。
サーバーを移転するためにこのフォルダをダウンロードしたいのですが、
容量が大きいためかダウンロードすることができません。
使用したソフトは
FFFTP
SmartFTP
の2つです。
FFFTPはタイムアウトの制限を解除し
ダウンロードが完了したと思ったらフォルダの中は空でファイルが1つもありません。
SmartFTPは11.6MBまでダウンロード出来たところで接続が切断されて終わってしまいます。
どうすればこのフォルダをダウンロードすることが出来るでしょうか?
よろしくお願い致します。
1) エクスプローラを使う方法
エクスプローラでアドレスバーにftp://<ftpサーバ名>と入力してみてください。
ユーザー名とパスワードが聞かれますのでftpのユーザ名とパスワードを入力します。
するとFTPサーバのファイルが通常のローカルファイルのように扱えますので
ダウンロードしたいローカルフォルダにコピーすればOKです。
2) FTPコマンドを使う方法
コマンドプロンプトを起動し
ftp <ftpサーバ名>
と入力してリターンキーを押します。
接続できたらユーザ名とパスワードを入力します。
ログインに成功すると
230 user logged in
という表示が出ます。
あとは目的のフォルダに移動しgetもしくはmgetコマンドでファイルを取得できます。
コマンド操作がわからない場合は
http://www.cc.u-tokai.ac.jp/FAQ/PC/ftp-command/ftp.html
http://www5.plala.or.jp/vaio0630/ftp/ftp.htm
などを参照するとよいと思います。
ファイルを取得し終わったらログアウトします。
FTPサーバの種類によって異なりますが
bye
もしくは
exit
でログアウトできると思います。
そのファイル数だとそれらソフトでは不可能です。私も使っていますがファイル数が多いといつもエラーでとまってしまいます。
ファイル数の多いときにいつもやっている方法は、2つです。
1.一旦サーバー上で全てのファイルを圧縮、アーカイブして1つにしたファイルをダウンロードします。アップロードはその逆をします。
sshなどでサーバーにログインできない場合はプログラムを書いてサーバー上で実行します。
tarでもlhaでもどれでも構いません。
2.linuxの機械を1台用意して、コマンドライン上で「lftp」のmirrorコマンドでダウンロードし新しいサーバーにアップロードします
http://www.itmedia.co.jp/bizid/articles/0612/14/news033.html
10MBまでしか一度に圧縮できないみたいですね。
500MBを圧縮できるソフトはありませんでしょうか…
サーバー側のディレクトリ構成がわからないのでうまくできるかわからないのですが、
普通の(cmd.exe)から実行する ftp.exe でサーバーに接続し、
prompt(enter)
cd /nantara
mget *
cd /kantara
mget *
...
でもだめでしょうか。
サーバーが Windows XP Prof/Windows Server で直接操作できるのなら、
430MByte 程度であれば、「プログラム」-「アクセサリ」-「バックアップ」で
移転したいフォルダーをまとめてひとつのファイルにしてから、相手に転送し、
同じ「バックアップ」を使えば何から何までコピーできます。
フォルダを zip 形式にしてしまうのもひとつの手でしょう。
フォルダ共有して単純にエクスプローラーからコピーするのもありかと。
UNIX系なら
転送元で、dump af /dev/xxxx diskdump を実行してから生成された diskdump というファイルを転送し、転送先で restore rf diskdump するか、
tar czf diskdump.tgz /foo/bar 実行後に diskdump.tgz を転送し、転送先で tar xzpf diskdump.tgz
を実行すればいいです。
rsh は今は使えないようにしているところがほとんどだと思いますが、
dump af - /dev/xxxx|rsh "(cd /foo;restore xf -)"
とか
tar cf - /foo/bar|rsh "(cd /;tar pf -)"
であれば中間ファイルなど作らずに一発で移動できます。
P.S.
お使いのプロバイダの転送容量制限に引っかかっていた、なんていうことはないですよね?
フォルダの中に11万のファイル
読み落としておりました。
mget A*[enter]
mget B*[enter]
mget C*[enter]
....
mget 0*[enter]
....
のようにして、正規表現を駆使して一回に転送するファイルの数を何とか減らす工夫が必要ですね。
それから、
dump af - /dev/xxxx|rsh "(cd /foo;restore xf -)"
は
dump af - /dev/xxxx|rsh hostname "(cd /foo;restore xf -)"
の誤りです。
tarは普段使用していますが、GB単位でも圧縮アーカイブできます
LHAでも同様だと思います。
http://www.itmedia.co.jp/bizid/articles/0612/14/news033.html
のソフトは使ったことがありませんのでちょっとコメントできないです。
私がご紹介した方法はサーバー内で一旦圧縮アーカイブして、その1つにまとまったファイルをダウンロードする方法です。
リモートで接続しながら圧縮したり、転送したりするとどうしてもネットワークが切れたりした際にとまってしまったりします。どのようなサーバーをご使用になっているのかわかりませんが、シェルでログインできる場合はコマンドライン上で圧縮アーカイブをすればよいです。もし、シェルでログインできない場合は、perlやphpでsystem関数を使ってサーバー上で圧縮させるのが一番手軽です。
ただし、perlなどのプログラムに処理をさせる場合タイムアウトするケースも無くは無いので(2)のlftpというソフトでmirrorコマンドを使うと良いと思います。
Linuxですとほとんどの場合lftpコマンドは標準で付いているのですが、もしwindowsで行う場合は、一旦cygwin(windows上にlinux環境を構築するソフト)をインストールしてその中でlftpコマンドを実行すると良いと思います。
私の知り合いも大量(やはり同じように数万から数十万のファイル)のファイルをダウンロードしたりアップロードする際にいつもストレスがたまっていたようですが、cygwinを入れてlftpの使い方を教えてあげたら快適に作業が出来るようになりました。
この方法であればプログラミングが出来ないけど、ホームページは作れる、ぐらいの方でも簡単に作業が出来ます。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | gaziro2000 | 56回 | 50回 | 2回 | 2008-09-19 10:30:39 |
2 | hommy | 55回 | 50回 | 1回 | 2008-09-19 11:25:48 |
3 | dharry | 9回 | 8回 | 0回 | 2008-09-20 15:03:43 |
4 | amphisbaena | 131回 | 103回 | 0回 | 2008-09-20 21:35:02 |
5 | worldtravel | 34回 | 28回 | 4回 | 2008-09-22 17:53:31 |
6 | 吉田 | 1回 | 0回 | 0回 | 2008-09-25 15:03:14 |
回答ありがとうございます。
タイムアウトになってしまいます。
regegitで上限を延ばしてもタイムアウトになってしまいます。
どうすればいいんでしょうか…