好友 hoher 攝影作品的質感與感覺,一直是我很景仰與學習的對象,當然了,也成了很多對攝影有興趣的朋友,常會去觀摩與學習的地方。最近 hoher 放在 Dreamhost 的 blog ,可能是因為太熱門了,導致使用的 CPU 量過高,被 Dreamhost 多次警告,最後索性直接把檔案改名,讓整個網站停擺(誰說 Dreamhost 不限制 CPU 了?),因此好友 hoher 興起了換一個空間商 ( Shared web hosting service ) 的念頭。
換空間商這件事,對於一個運作多時的網站來說,真的是一件大事。單就怎麼選擇一個適當的空間商 ( Shared web hosting service ) 這件事,其中的酸甜苦辣,就可以講整整一大篇,不過,容後再談怎麼選空間商 ( Shared web hosting service ) 這件事。還有一件非常重要的事情,就是如何搬移檔案。
如何搬移檔案?
沒錯!如何搬移檔案,對於我們這一種存放有攝影相關作品的網站來說,可說是一件大事。因為攝影作品從以前到現在累積下來,動輒以 GB 來計算,怎樣快速且有效率的轉移,就成了很重要的事情。以我自己來說,我喜歡用 Shell Access (SSH) 底下的指令來搬移,因為以這一種模式,又快又好,所以囉!這個功能,也是我在選空間商時,很重要的指標之一。當然囉! hoher 在搬移網站時,也是以這麼模式來進行了。
可是,問題來囉!正在 hoher 加緊腳步搬家的當頭,他傳來了一段訊息:
hoher: 我的gallery
hoher: 壓縮完有4.xG
JJCHEN: 棒!
hoher: 沒法用wget抓
JJCHEN: 可以吧
hoher: 不行ㄝ
hoher: 出現錯誤
hoher: tar在壓縮的時候
hoher: 可以分割嗎?
當下轉進腦筋的第一個想法是我們 hoher 老大是不是在騙人呀?用的是 unix 底下的檔案格式,又不是 Win32 系統,怎麼會有 4G 的限制?用 man wget 指令仔細看了一下,並沒有提到這一點呀?
後來仔細用 Google 找了一下,果真有這個限制耶!不過,這個限制是因為 Apache 所產生的,Apache 為了某些因素,是不允許直接讀取超過 2G 的檔案,那要怎麼做呢?
可以使用 split 指令 來分割檔案,作法如下:
壓縮與分割的過程:
- 請先將目錄(檔案)壓縮起來,比如說是 myphoto.tar.gz
- 假設你要以每 1000000000 bytes (約 1 GB)為分割大小,請執行以下指令:
# split -b 1000000000 myphoto.tar.gz
-b 就是每一個檔案是多少 byte,以上述為例,系統就會幫你以每 1000000000 bytes 為一個單位分割成數個小檔案,以 xaa, xab, xac ....... 的模式命名,其中 x 是一個亂數檔名。 - 如果你跟我一樣有命名潔癖的,不喜歡這一種命名模式,您可以這樣做:
# split -b 1000000000 myphoto.tar.gz myphoto-
那命名模式,就會改成命名模式以 " myphoto- "為開頭,結尾為 aa, ab, ac ......,也就是你會看到 myphoto-aa, myphoto-ab,
myphoto-ac ... 這樣的檔名。 - 什麼?你不喜歡檔名尾巴是兩組的喔?那你就這樣做好了:
# split -a 3 -b 1000000000 myphoto.tar.gz myphoto-
-a 後面的數字,就是你想要幾組的尾巴,以上述為例,就是三組,這樣一來 你會看到 myphoto-aaa, myphoto-aab,
myphoto-aac ... 這樣的檔名,你喜歡幾組,就換成幾組吧!別在鬧了!
這樣一來,就可以順利的用利用 wget 來把檔案轉移!達到你的目的囉!
wget http://domain.name/myphoto-aaa
wget http://domain.name/myphoto-aaa
wget .........
就這樣結束了?
當然不囉!有分割,沒合併怎麼可以呀!?
合併與解壓的過程:
- 接著把它使用以下指令結合起來:
# cat myphoto-* > myphoto.tar.gz
如果你沒指定命名規則,那就比較麻煩一點。請先將檔案放在一個獨立的目錄內,裡面千萬不要有太多餘的檔案,然後使用以下的指令:
# cat * > myphoto.tar.gz - 現在你應該看到了原來的 myphoto.tar.gz 檔案,直接用 tar 把他解壓就可以囉!
# tar zxvf myphoto.tar.gz - 現在你應該就會看到原來的檔案與目錄結構囉
相關文章:
請問DreamHost的CPU上限是多少?
Hoher的流量又是多大導致被警告?
好棒 ... 我還真沒用過這類的分割及合併程式
今天又學到了一課
to : S.D
DreamHost 他在電子報跟網站上面都說明了不限制 CPU 時間,但是根據觀察與親身的體驗,如果你的 CPU 使用時間,超過 5000 cpu seconds,他就會有訊息給你了。
所以建議使用 Dreamhost 的人,應該把 Manage Users 選項裡面,有一個
CPU Reporting: □ Enable user CPU usage statistics.
把他打勾,然後你就會在 /%homedir/logs/resources/ 的目錄,看到每天產生的檔案,那就是你每天的 CPU 使用量。
他的基本限制是
CPU percentage assumes 24000 cpu seconds per day total.
至於超過 CPU 限制,會怎樣?其實有很多小動作的,以後再來談
真感動~~
還為我寫了一篇!!
不過我要補充一下,我後來用這個方法還是不行的!!
我的相簿壓起來是 4.4G ,我分割成每個檔600MB
分那麼小是因為
DH=>新空間,用ftp傳時都會不定時中斷,而這我就不知道為什麼了?所以才分小一點的檔案!!
當完從分割=>傳送=>結合,一切正常
但是解壓縮時解到一半就會有問題,連試了兩次還是一樣!!!
**我去查了錯誤訊息似乎跟兩個站的tar or gzip版本不同有觀
最好只好用最笨的方法,把我相簿裡的目錄三百多個,每十個壓成一個檔再傳送過去解壓!!
其中有一個解出來仍有問題,而這個檔我是有用了z參數
也就是 tar -cvzf file.tar.gz 目錄
後來去掉壓縮參數
也就是 tar -cvf file.tar.gz 傳過去再解壓就正常了!!!
後來幫其他人備份傳送也遇到過一次,也是改不壓縮後就正常了!!
所以..........
總結,很可能是gzip版本不同的關係,但是我也不想再測試了!!
4.4G,光是壓縮分割傳送,每次就要花半個小時以上!! ^^"
我忘了補充一下,如果各位會shell指令,在租空間時
一定要找有提供 ssh 功能的主機商!!不然一定會搞死!!
原本我是租一間無 ssh 功能的 hosting (http://www.ixwebhosting.com)
後來才改 (http://www.hostmonster.com)
不過有一點值得讚賞的是,美國的主機如果使用不滿意可以退喔!
從30~90天不等,甚至聽說有一年的,台灣可能有七天就不錯了!!
對我們來說這實在是一大福音,或許美國人早就見怪不怪了!!
ps: 另用wget抓檔時,他的限制是2G喔!!
現在會用tar、gzip已經不多了^^
太神猛了:)
您好,想跟您請教一下,我有兩個空間,要用什麼指令讓他們互相搬移檔案?用自己的ftp上下傳,真的是太辛苦也太慢了
to simon
是怎樣的兩個空間呢?
哪兩家主機商?
可以定義一下「互相搬移」嗎?
是要同步嗎?
建議另一個solution
mirror或rsync來同步兩台機器之間的檔案
並配合使用crontab定時同步
to simon
如果你新舊的主機商都有支援SSH Access,你就先登入進去舊的空間一樣壓縮好之後,再登入新的空間之後用wget指令去抓。
如果沒有...發ticket去問一下你新的主機商可不可以"免費"幫你搬家,一般他們都很樂意幫人搬家的 😀
各位好,小地又來打擾各位
我在netfirm裡面的檔案有20多g
但是他的gz好像只能壓到1g
可以請問各位先進有沒有直接批次壓縮成gz的方式
to: simon
我看看看 wHOaMi blog 的介紹 ,netfirm 好像不支援 split 指令喔
那可能得一個目錄一個目錄壓縮囉!
各位熱心的朋友,小弟把問題解決了,我用的方式是用wget登入ftp下載所有的檔案,因為我的備份檔案超過26g,實在是沒辦法壓
netfirm的壓縮限制好像是1g
美國isp的速度對聯起來可真不是普通的快,我把電腦放著跑幾個小時就ok了
ps忘了補充
感謝各位的協助真的很感謝!~