關於我自己

我的相片
New York, New York, United States
我叫江奕賢啦

2006年7月22日

破解2GB的限制

很多系統上都無法處理超過2GB的檔案
比如說wget,你要他download一個超過2GB的檔案 他當場就裝死給你看
lynx download好一個超過2GB的檔案 你要他存檔的時候 她就跟你說 抱歉
甚至有些file system直接跟你說 沒辦法存超過2GB的檔案
很多web server甚至在header裡面會回報你一個負的檔案大小
導致flashget等序傳軟體無法啟動序傳功能(大檔很容易半途碰到timeout,所以需要續傳)
這些 在古老時代出生的老人們 都很能理解
但是 該怎麼解決ㄌㄟ?到底該怎麼downloadㄌㄟ?
我只能說 通常這時候 回歸原始是最簡單的解法
lynx -dump http://xxx.xxx/xxx.tar.gz > xxx.tar.gz 就解決了
file system無法存?
不需要我教妳head怎麼用吧?(不是罵你喔!我是說unix裡面的head指令啦)

3 則留言:

Fva... 提到...

hi,markchiang...
可以請問一下嗎?
最近也在unix上存取http協定發生些小問題,
因為登入unix機器後,發現沒有安裝http client,但因無管理權,所以也不能自安裝軟體,裡面也沒有編譯軟體,我想利用較原始的方法去存取,就是直接telnet到目標web的80 port直接去GET一個jpeg檔回來,但之後我把
訊息重導到新檔再去刪掉http header&&空白行後,然後再用od去檢查jpeg檔發現跟原始的圖檔在od時內容有不同,而且得到的新檔也比較小,哪出問題呢?MIME嗎?Thanks!!

Yih-Shien 提到...

通常我都用lynx或wget啦
要不就用些已經compile好, copy上去就能用的tool(java或binary)
如果真的不行 真要用到telnet
那要看你檔案小多少 小很多的話 通常是ascii和binary mode的問題
如果檔案小不到八分之一 很有可能是7bit/8bit的問題
(有些文字模式會把第一個bit丟掉 因為英文用不到)
set一下你的terminal到8bit應該就行了

Fva... 提到...

hi,markchiang
花了一段時間研究telnet傳輸二進位檔,
發現如果用telnet來傳圖檔、編譯過的二進位檔,telnet會去解釋檔案內容裡帶有telnet控制字元的byte,造成衝突最後會導致二進位檔內的某些對於telnet有特殊意義的byte被telnet client翻譯,然後這個二進位檔就壞了...
因此解決方法大概就只能寫個socket或用netcat了:)