2011/03/29

autofs

使用 autofs 工具來挂載 NFS 檔案系統。

服務的執行腳本:
/etc/init.d/autofs  [ start | stop | reload ]

auto.master 預設在 /etc 下,它記錄了 mapping files 的位置。
如果說,mount points 的對照是地圖,auto.master 不是地圖,它記錄的是地圖的位置。

/etc/auto.master
/misc    /etc/auto.misc    --timeout 60
例如,要在 /misc 資料夾內做 auto mount,則 autofs 啟動時會全權控制該資料夾。
并且根據它對應的地圖檔 /etc/auto.misc 的內容,自動挂載磁區。
--timeout 則是設定該 auto mount 根目錄(/misc)下所有 mount point 的卸載時間。
超過 60 秒沒有對該磁區存取,就自動 umount 了。

根據 /etc/auto.master 的地圖指引,還需要編寫一個真正的 auto mount points 對映檔。
/etc/auto.misc
the_directory_name_in_misc    -OPTIONS    remote_host:/path
第一個欄位記錄的是 auto mount point 的名稱,假設叫 foo。
則該 autofs 的根目錄(/misc)不能有名稱為 foo 的資料夾。
基本上,/misc 會保持空的,autofs 會自動在挂載時建立 mount point。

第二個欄位就是挂載的設定選項了,使用逗號","分隔,記得最前面要加一個 -
例如:-default,rw

最後一個欄位是遠端主機 NFS export 出來的挂載點。

2011/03/25

架設 Yum 伺服器

#!/bin/bash

# RPMForge

cd /yum/rpmforge5/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./rpmforge http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./dag http://apt.sw.be/redhat/el5/en/i386/dag/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./extras http://apt.sw.be/redhat/el5/en/i386/extras/RPMS/

cd /yum/rpmforge5/x86_64/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./rpmforge http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./dag http://apt.sw.be/redhat/el5/en/x86_64/dag/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./extras http://apt.sw.be/redhat/el5/en/x86_64/extras/RPMS/

cd /yum/rpmforge6/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./rpmforge http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./dag http://apt.sw.be/redhat/el6/en/i386/dag/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./extras http://apt.sw.be/redhat/el6/en/i386/extras/RPMS/

cd /yum/rpmforge6/x86_64/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./rpmforge http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./dag http://apt.sw.be/redhat/el6/en/x86_64/dag/RPMS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./extras http://apt.sw.be/redhat/el6/en/x86_64/extras/RPMS/

# EPEL

cd /yum/epel5/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://download.fedora.redhat.com/pub/epel/5/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386/debug http://download.fedora.redhat.com/pub/epel/5/i386/debug/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://download.fedora.redhat.com/pub/epel/5/x86_64/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64/debug http://download.fedora.redhat.com/pub/epel/5/x86_64/debug/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://download.fedora.redha t.com/pub/epel/testing/5/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://download.fedora.red hat.com/pub/epel/testing/5/x86_64/

cd /yum/epel6/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://download.fedora.redhat.com/pub/epel/6/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386/debug http://download.fedora.redhat.com/pub/epel/6/i386/debug/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://download.fedora.redhat.com/pub/epel/6/x86_64/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64/debug http://download.fedora.redhat.com/pub/epel/6/x86_64/debug/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://download.fedora.redhat.com/pub/epel/testing/6/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://download.fedora.redhat.com/pub/epel/testing/6/x86_64/

# Remi

cd /yum/remi5/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://rpms.famillecollet.com/enterprise/5/remi/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://rpms.famillecollet.com/enterprise/5/olds/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://rpms.famillecollet.com/enterprise/5/remi/x86_64/ 
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://rpms.famillecollet.com/enterprise/5/olds/x86_64/

cd /yum/remi6/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://rpms.famillecollet.com/enterprise/6/remi/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://rpms.famillecollet.com/enterprise/6/olds/i386/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://rpms.famillecollet.com/enterprise/6/remi/x86_64/ 
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://rpms.famillecollet.com/enterprise/6/olds/x86_64/

# CentOS

cd /yum/centos5
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://mirror.centos.org/centos/5/os/i386/CentOS/
wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://mirror.centos.org/centos/5/os/x86_64/CentOS/

#cd /yum/centos6/
#wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./i386 http://mirror.centos.org/centos/6/os/i386/
#wget --accept=rpm --level=1 --recursive --no-parent -N --no-directories --directory-prefix=./x86_64 http://mirror.centos.org/centos/6/os/x86_64/

2011/03/22

wget

GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.

wget 是開放原始碼的下載工具,它可以透過 HTTP、HTTPS、FTP 協議擷取指定的檔案。
wget 并不是一個可以互動的指令工具,不過它可以輕易地套在 shell script 中。
wget 不需要圖形環境支援,只要有文字終端機就可以使用了。

可以把 wget 想成平常在網頁上點了一個連結的效果,不同的地方在於:
當你點了一個連結,瀏覽器會把你導向該連結的網頁,并把該網頁畫出來,呈現給你看;
當你給定一個連結給 wget,wget 會幫你把該連結的檔案給抓下來,放到你的硬碟。

例如:
wget www.google.com

wget 會把 Google 的首頁抓下來,你會得到一個 Google 首頁的 index.html 檔案。
你可能會疑惑,Google 首頁那些圖片呢?那些首頁引用的 Javascript 檔呢?

wget 預設只針對使用者給的 URL 做處理。
至于該 URL 的內容所含的其他 URL 資源,wget 不會去抽取它們。

不過 wget 有許多參數跟選項,適當地調整跟啟動它們,就會有非常驚人的能力。
它們就像是 wget 的魔法按鈕,按下去就會達成你的願望。
它們很多,很繁復。

例如:
wget -r www.google.com

r 就是 recursive 的意思,遞迴處理。
這個動作就是網路上經常聽到“砍站”,意思就是把整個網站完整的復制下來。

這個選項要非常小心使用!
通常會使用 --level 參數限制遞迴的層數,
否則網站的 URL 如果連到另一個網站,另一個網站又連到 ...
搞不好你會把整個 Internet 抓下來 :-)

不過 wget 在做 recursive 下載時,會嚴謹恪守 Robot Exclusion 的規範。
robots.txt 內規定不能動、不能挖取的檔案,wget 是不會去觸犯的。
可以嘗試一下,看看效果:
wget -r http://en.wikipedia.org



[1]

目標:把 OEC SPACE(http://www.hsiu28.net)網站整個抓到 /tmp 資料夾下。

指令:
wget --mirror --wait=2 --html-extension --convert-links --directory-prefix=/tmp http://www.hsiu28.net
--mirror:映射網站,遞迴網站的所有連結,搜尋必要之檔案。
--wait=2:等待兩秒才送下一個 request,可用 --random-wait 取代。
--html-extension:在 .cgi 或 .php 或 .jsp 等等的副檔名最後再加上 .html。
--covert-links:把網頁上所有絕對位置連結轉成本地端的相對位置連結。
--directory-prefix=路徑:本地端儲存的路徑,可簡寫成“-P 路徑”。

--mirror 其實是好幾個選項的合體(-r -N -l inf -nr):
-r,--recursive:遞迴下載。
-l,--level:遞迴下載的層數,inf 表示無限。
-N,--timestamping:檢查遠端文件的時間是否較本地端的新,再決定是否下載。
-nr,--dont-remove-listing:保留 .listing 檔案。

[2]

目標:續傳一個大檔案。

指令:
wget -c http://URL/the_big_file
-c,--continue:檔案續傳

[3]

目標:將 http://apt.sw.be/redhat/ 的 rpm 通通鏡像下來。

指令:
wget --mirror --reject=gif,bmp,html --accept=rpm,RPM http://apt.sw.be/redhat/
-A,--accept=副檔名:要下載的檔案類型
-R,--reject=副檔名:不要下載的檔案類型

[4]

目標:使用 wildcard 遮罩(*.rpm)下載 FTP 上的一大堆 rpm 檔案。

注意,此處并沒有使用 --mirror,而是使用通用字元告訴 wget 下載符合規則的檔案。
這樣的用法,在 wget 中,僅限於 FTP 協議才可以。

指令:
# FTP ONLY!
wget ftp://apt.sw.be/mirrors/redhat/rhel/beta/6/i386/os/Packages/*.rpm

[5]

目標:透過 HTTP 下載 apt.sw.be 上 EPEL 5 i386 所有的 .rpm 檔案。

wget 并沒有辦法透過 HTTP 使用 wildcard 遮罩下載檔案。
在 HTTP 中,必須指定檔名,wget 才有辦法處理。
要達成類似 wildcard 的效果,必須繞個彎想法子,
所以改成指定 wget 下載這層目錄下副檔名為 rpm 的檔案,
不過,前提是該 Web Server 必須開放該層目錄的 file list,wget 才有辦法解析。

指令:
wget --accept=rpm --level=1 --recursive --no-parent -N http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/
-np,--no-parent:不要追溯回父目錄

Reference:
01. http://blog.dayuer.com/freebsd-tooltips/wget_help
02. http://redhat.ecenter.idv.tw/bbs/showthread.php?threadid=39222
03. http://ubuntuforums.org/showthread.php?t=638362

curl

cURL

表單範例:

GET method 互動
curl "www.hostname.com/when/do.cgi?who=me&press=OK"

POST method 互動
curl -d "who=me&press=%20OK%20" www.hostname.com/when/do.cgi

2011/03/15

Gitorious

Setup Gitorious in Ubuntu
Setup Gitorious in RHEL 5.x

https://github.com/zx1986/Gitorious-Setup

舊筆記怎麽被刪掉了!?
該死!