Wgetを使用して、サーバー間でいくつかのファイルをミラーリングしています。次のコマンドを使用しています。
wget -x -N -i http://domain.com/filelist.txt
-x =ディレクトリ構造を保持したいので
-N =新しいファイルのみを取得するためのタイムスタンプ
-i =各行に1つずつ、外部ファイルからファイルのリストをダウンロードします。
私がテストしているものなどの小さなファイルは、326kbの大きなダウンロードで十分です。
ただし、5 GBの別のファイルは203 MBをダウンロードしてから停止するだけです(常に203 MBで数キロバイトが必要です)
表示されるエラーメッセージは次のとおりです。
「path/to/file.Zip」に書き込めません
(なぜ前後に奇妙な文字があるのか分かりません。私はWindowsでPuTTYを使用していて、これは何か関係があるかどうかわからないので、そのままにしておきます。私はそうではないと思います。).
完全な応答は次のとおりです(パス、IP、およびドメイン名を置き換えました)。
--2012-08-31 12:41:19-- http://domain.com/filelist.txt domain.comを解決しています... MY_IP domain.comに接続しています| MY_IP |:80 ...接続しました。 HTTPリクエストが送信され、応答を待っています... 200 OK長さ:161 [text/plain]サーバーファイルはローカルファイルâdomain.com/ filelist.txtよりも新しいものではありません
--2012-08-31 12:41:19-- http://domain.com/path/to/file.Zip domain.comに接続中| MY_IP |:80 ...接続済み。 HTTPリクエストが送信され、応答を待っています... 200 OK長さ:5502192869(5.1G)[アプリケーション/ Zip]サイズが一致しません(ローカル213004288)-取得しています。
--2012-08-31 12:41:19-- http://domain.com/path/to/file.Zip domain.comに接続中| MY_IP |:80 ...接続済み。 HTTPリクエストが送信され、応答を待っています... 200 OK長さ:5502192869(5.1G)[application/Zip]保存先:âdomain.com/ path/to /file.Zipâ
3%[====>
213,003,412 24秒で8.74M /秒「domain.com/path/to/file.Zip」に書き込めません
パスディレクトリが既に存在するか、その場で作成されている場合、違いはないようです。
なぜ停止するのか、どうすればそれを修正できるのか、誰か知っていますか?
どんな助けでも最も高く評価されます。
編集:私はまた、wgetを実行し、ファイルを入力せずにファイルの名前を変更しようとしました。今回は3GB強をダウンロードし、同じ書き込みエラーを表示します。
wget -x -N http://domain.com/path/to/file.Zip -O files/bigfile.Zip
最後にそれを理解し、それはスペースの問題でした。 1and1クラウドサーバーの問題です。詳しくはこちらをご覧ください http://www.mojowill.com/geek/1and1-dynamic-cloud-server-disk-allocation/
ディスク領域が不足している場合、このエラーが発生します。 dfを実行すると、書き込み先のディレクトリが100%かどうかがわかります
長いURLの問題です。私もそれに直面しました。そこで、bit.lyを使用してURLを短くしました。チャームのように機能します!
Wgetの後のパイプの後に-
をtar
コマンドに追加しました
持っていた
wget https://example.com/path/to/file.tar.gz -O -|tar -xzf -C /path/to/file
次にそれを
wget https://example.com/path/to/file.tar.gz -O - | tar -xzvf - -C /path/to/file
このコマンドで同じエラーが発生しました:
Sudo wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
問題は2番目のコマンドのSudoであり、私はそれを次のように解決します:
Sudo su
それが大きなファイルの保存を開始し、203 MBを書き込む場合、受信側に完全なファイルシステムがあるか、ネットワーク接続がタイムアウトしていると思われます。
受信サーバーでdf -hを使用して、ファイルシステムがいっぱいかどうかを確認できます。
Wgetのタイムアウトの問題については、この回答を確認してください。
https://stackoverflow.com/questions/2291524/does-wget-timeout
また、失敗した転送を再試行し、-Nタイムスタンプオプションを省略します。
また、ulimit -aを実行して、受信サーバーにファイルサイズの制限があるかどうかを確認します。
私は次のようなことをしていました:
wget -x -N -i http://domain.com/filelist.txt
私は受け取っていました:
--2016-12-09 07:44:23-- https://www.example.com/dir/details?abc=123&def=456
Resolving www.example.com (www.example.com)... 1.2.3.4
Connecting to www.example.com (www.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
details?abc=123&def=456: No such file or directory
Cannot write to ‘details?abc=123&def=456’ (Success).
私の同等のfilelist.txtファイルには、次のようなURLがありました。
https://www.example.com/dir/details?abc=123&def=456
したがって、デバッグするために、wgetが作成しようとしていたのと同じファイルを作成してみました。
touch "details?abc=123&def=456"
touch: cannot touch ‘details?abc=123&def=456’: No such file or directory
ビオラ! ?
が問題だったようですが、ファイル名からすべての特殊文字を削除して、エスケープされなかった場合の&
の動作を想像してください。