遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 <tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif"/></td><td class="small" width="122"><p><span class="ast">未顯示需要 JavaScript 的文檔選項</span></p></td></tr> <script type="text/javascript" language="JavaScript"> </script> 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 将此頁作為電子郵件發送
級别: 中級
Martin Brown ([email protected]), 自由撰稿人, 顧問
2006 年 8 月 03 日
了 解如何在活動的系統中傳輸整個檔案系統,包括如何建立、複制和重新實作新的檔案系統。如果出現了 UNIX® 磁盤、系統故障或隻是填滿了檔案系統,那麼您需要建立新的分區和檔案系統,并對相關内容進行複制。甚至可能需要将新的分區裝入到适當的地方,以保持重要的 檔案群組件的位置。更複雜的情況是,您需要在活動的系統中完成這項工作,需要保持檔案權限、所有權和可能存在的命名管道以及其他元件。高效地傳輸這些元件 并保持所有這些資訊,是遷移過程中的重要部分。 關于本系列
通常,UNIX® 管理者都擁有一套常用的輔助程序管理的實用工具、訣竅和系統。本文提供了各種用于簡化各個過程的關鍵實用工具、指令行鍊和腳本。這些工具中的一部分來自于 作業系統,而大部分的訣竅則來源于長期的經驗積累和減輕系統管理者的工作壓力的要求。本系列文章主要專注于最大限度地利用各種 UNIX 環境中可用的工具,包括簡化異類環境中的管理任務的方法。
移動 UNIX 目錄或檔案系統
在許多情況下,您可能需要将 UNIX 檔案系統從一個裝置或硬碟分區移動到另一個裝置或硬碟分區,或者需要移動檔案系統中的内容以釋放所占用的空間,在處理這些情況的過程中,都需要建立新的文 件系統。可能是因為裝置将會出現故障,或者僅僅隻是耗盡了空間。您可以在運作于單使用者模式的系統或者活動的 和運作的系統(需要確定檔案在移動的過程中仍然可用)中完成這項任務。
在後面的這種情況下,即對活動的檔案系統進行遷移時,您可能需要在某個應用程式運作的過程中對其進行移動。對于上面的這兩種情況,您可能需要移動與系統相關的檔案系統(如 /usr 或 /var),無論是否運作于單使用者模式,該檔案系統都有可能正在被使用。
在任何檔案系統的移動操作中,您必須確定正确地将資料複制到新的目标。作為一個典型的示例,假定您的系統的檔案/磁盤布局和使用情況如清單 1 所示。
清單 1. 示例檔案/磁盤布局和使用情況
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 7692908 6467756 1225152 84% /
udev 517560 184 517376 1% /dev
/dev/hda1 115377640 1743668 107773060 2% /var/lib/mysql
/dev/hdb1 115380192 14604460 94914696 14% /export/data
/dev/hde1 96132940 3962940 87286644 5% /export/home
/dev/hde4 22960280 133484 21660480 1% /tmp
none 517560 0 517560 0% /dev/shm
正如您在清單 1 中所看到的,根檔案系統已使用了百分之八十四,您可能應該将處于單個分區的根檔案系統中的目錄移動到新的分區或裝置,以確定根檔案系統不會被占滿。
最好是移動顯著影響希望釋放空間的檔案系統中的具有特定用途的單個目錄。例如,在這個示例中,您可能希望将 /var 或 /usr 目錄移動到它自己的檔案系統。移動多個更小的目錄,效率會比較低。您所需要做的隻是輕松地移動單個目錄以釋放所占用的空間。
在有些情況下,您可能需要将現有的分區移動或複制到一個新的位置(例如,在裝置可能出現故障的情況下)。這裡,已經解釋了究竟是應該選擇目錄還是現有的檔案系統。
在本文中,假設您已經添加了一個新的硬碟裝置或具有備用的硬碟裝置或分區,以用作目錄或檔案系統的移動目标。
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
移動資料的快速指導
移動檔案系統或将現有的目錄移動到新的檔案系統,基本操作序列如下:
選擇要進行複制的資料。 建立一個新的分區。 在該分區上建立一個新的檔案系統。 将該分區裝入到一個臨時目錄。 将資料複制到這個臨時目錄。 對原始目錄進行重命名。 建立新的裝入點。 裝入這個檔案系統。 理想情況下,在完成這些操作之後,您應該重新啟動計算機,盡管這并不總是必需的或可能的,但是應該在允許的情況下盡早重新啟動計算機。
讓我們對序列中的每個步驟進行更仔細的研究。
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
建立新的分區和檔案系統
在建立新的分區和檔案系統之前,首先確定可用大小和空間與要移動到新的檔案系統中的檔案/目錄的大小相比對。要完成這項工作,最簡單的方法是使用 du 工具來确定目前檔案/目錄的大小。例如,如果您打算對示例系統中的 /usr 目錄進行移動,可以使用如清單 2 所示的指令。
清單 2. 移動示例系統中的 /usr 目錄
$ du -sk /usr
3923068 /usr
-s
選項確定生成整個目錄的摘要資訊,而不是所有内容的資訊,并且 -k
選項確定以 KB 為機關顯示目錄大小。從上面的輸出結果中您可以确定,需要至少 4GB 大小的新的分區。
如果您将現有的檔案系統(而不是現有的檔案系統中的單個目錄)移動到一個更大的分區,那麼可以使用 df 的輸出來确定目前檔案系統的大小。
在知道了其大小之後,理想情況下,您應該建立一個比所需大小大百分之二十五的新的分區,并且至少要大百分之十。對于上面的示例檔案系統,您至少需要建立一個 5GB 大小的新的分區。
要建立新的分區和檔案系統,需要使用适合于您的作業系統的工具。例如:
在 Linux® 中,您需要使用 fdisk 對實體硬碟上的各個分區進行配置,并使用 mke2fs
或 mkfs.*
建立指令中的一個,以便在新的分區上建立合适的檔案系統。 在 Solaris SPARC 系統中,可以使用 format 來建立并配置分區。在 Solaris x86 系統中,在使用 format 對 Sun 分區表進行配置之前,您可能還需要使用 fdisk 來配置磁盤分區。然後,您可以使用 newfs
(或某個檔案系統特定的指令)來建立檔案系統。 在 AIX® 中,可以使用 mkvg、chpv 或某個其他的卷管理工具為新的分區建立合适的分區或卷組。然後,可以使用 crfs 建立檔案系統。 建立了檔案系統之後,在對資料進行複制時,需要在進行載入的新檔案系統中建立一個新的目錄。例如,我個人喜歡在相似的位置建立新的檔案系統,并且通過名稱将其辨別為臨時檔案系統。
對于上面的 /usr 示例,我将建立一個新的目錄 /mnt/usr.tmp,并将新的檔案系統載入到該目錄。
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
複制資訊
事實上,複制資訊可能是整個過程中最簡單的部分,但是選擇合适的工具将直接影響到資訊傳輸的有效性和效率。然而,您應該確定将檔案複制到正确的位置,要避免覆寫現有的資料。
有許多種不同的方法可以完成這個任務,但是主要的兩種解決方案是使用基本的 cp 工具或 tar 工具。前者是一種非常快速的方法,但是在某些作業系統中,對于一些非标準的檔案,如管道和裝置,可能會出現問題。tar 工具可能是一種速度較慢的替代方法,但是在傳輸其他類型的檔案時,它更加可靠并且提供了關于複制過程的更加可視化的回報資訊。
無論您使用哪一種方法,都應該確定不要對源檔案系統中的任何檔案進行更新。請記住,您所建立的任何副本僅包含在進行複制操作時對應的檔案中所包含的資料。如果在進行複制的過程中對該檔案系統中的檔案進行了更新,那麼新的檔案系統中的檔案可能是不完整的并且受到了損壞。
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
使用 cp
cp 工具提供了一個遞歸複制選項 (
-r
),使用該選項可以将所有的檔案、目錄以及這些目錄中的檔案全部複制到目标。您還可以使用 -p
選項來保持所有權和複制的檔案的權限。如果您希望確定新的檔案系統保留源檔案系統的安全細節,那麼這是至關重要的。在大多數情況下,這樣做是必須的。
要将檔案從現有的目錄複制到新的位置,請執行以下步驟:
改變到新的目标目錄并确認位于正确的位置(請參見清單 3)。
清單 3. 改變目标目錄
$ cd /mnt/usr.tmp
$ pwd
/mnt/usr.tmp
将檔案從舊的目錄複制到目前(新的)目錄,如清單 4 所示。
清單 4. 将檔案複制到新的目錄
您應該進行快速的驗證以確定成功地複制了這些檔案。簡單的 ls
即可以得到清楚的訓示(請參見清單 5)。稍後您将了解到更詳細的檢查方法。
清單 5. 驗證成功地複制了這些檔案
$ ls -l /usr
total 238
drwxr-xr-x 2 root bin 1024 Apr 20 13:11 4lib/
lrwxrwxrwx 1 root root 5 Apr 20 12:40 5bin -> ./bin/
lrwxrwxrwx 1 root root 9 Apr 20 12:34 X -> ./openwin/
drwxr-xr-x 6 root bin 512 Apr 20 12:42 X11/
lrwxrwxrwx 1 root root 3 Apr 20 12:41 X11R6 -> X11/
lrwxrwxrwx 1 root root 10 Apr 20 13:03 adm -> ../var/adm/
drwxr-xr-x 10 root bin 512 Apr 20 12:59 apache/
drwxr-xr-x 8 root bin 512 Apr 20 12:47 apache2/
drwxr-xr-x 8 root bin 512 Apr 20 12:53 appserver/
drwx------ 8 root bin 512 Apr 20 12:53 aset/
drwxr-xr-x 4 root bin 16384 Apr 20 13:17 bin/
drwxr-xr-x 4 root bin 512 Apr 20 12:33 ccs/
...
lrwxrwxrwx 1 root root 10 Apr 20 12:32 tmp -> ../var/tmp/
drwxr-xr-x 4 root bin 2048 Apr 20 13:00 ucb/
drwxr-xr-x 4 root bin 512 Apr 20 13:17 ucbinclude/
drwxr-xr-x 3 root bin 1024 Apr 20 13:17 ucblib/
drwxr-xr-x 7 root bin 512 Apr 20 13:03 vmsys/
drwxr-xr-x 5 root bin 512 Apr 20 12:44 xpg4/
drwxr-xr-x 3 root bin 512 Apr 20 12:40 xpg6
如果您發現沒有正确地複制某些檔案或者符号連結和其他特殊類型的檔案,那麼您可能需要嘗試使用 tar。 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
使用 tar
與 cp 相比,tar 工具提供了許多的好處。首先,也是最重要的,對于非标準的檔案類型,它通常更加可靠。其次,因為它能夠提供關于複制的檔案的可視化回報資訊,是以使用它将 檔案複制到新的系統會更加友善。最後一點也非常重要,您可以使用 tar 建立檔案系統的存檔檔案,萬一在出現問題時,該檔案可以作為源目錄/檔案系統的備份。在處于單使用者模式的計算機的使用者檔案系統中,這種 tar 檔案方法可以用來建立新的檔案系統内容,而無需将新的目标裝入到臨時目錄裝入點。
使用 tar 進行檔案複制的最好的方法是,通過管道将 tar 建立的檔案傳遞到位于新的位置進行檔案提取的另一個 tar。清單 6 中給出了一個這樣的示例。
清單 6. 使用 tar 進行檔案複制
$ cd /usr
$ tar cfp - ./* |(cd /mnt/usr.tmp; tar xvfp -)
第一個 tar 中的 c
參數告訴 tar 建立一個存檔。 v
、 f
和 p
選項分别指定輸出詳細資訊(顯示正在添加或提取的檔案)、對檔案(而不是錄音帶裝置)進行寫入/讀取、保持權限和所有權。
清單 6 中的指令行能夠正常工作,這是因為在管道的後半部分中,在從标準輸入讀取管道的前半部分中建立的 .tar 檔案之前,首先改變到了目标目錄。
如果您需要建立一個 .tar 檔案并使用這種方法,而不是執行直接的複制,那麼您必須擁有一個能夠容納源目錄中所有檔案的檔案系統。清單 7 介紹了進行複制的過程。
清單 7. 進行複制的過程
$ cd /usr
$ tar cfp /tmp/usr.tar ./*
$ cd /mnt/usr.tmp
$ tar xvfp /tmp/usr.tar
無論使用哪一種解決方案,您将在每個檔案複制到/複制出存檔檔案時獲得相應的報告,假設您使用了 v
指令行選項(請參見清單 8)。
清單 8. 列印出複制過程
a ./4lib/ 0K
a ./4lib/libX.so.1.0 symbolic link to ./libX11.so.4.3
a ./4lib/libX11.so.4.3 216K
a ./4lib/libXaw.so.4.0 208K
a ./4lib/libXmu.so.4.0 72K
a ./4lib/libXol.so.3.1 1056K
a ./4lib/libXt.so.4.1 264K
a ./4lib/libce.so.0.0 48K
a ./4lib/libdeskset.so.0.1 64K
a ./4lib/libdga.so.1.0 40K
a ./4lib/libhelp.so.1.0 24K
a ./4lib/libolgx.so.3.1 56K
a ./4lib/libtt.so.1.1 848K
a ./4lib/libttstub.so.1.1 32K
a ./4lib/libxview.so.3.73 1328K
a ./4lib/libdl.so.1.0 symbolic link to ../../lib/libdl.so.1
a ./4lib/libc.so.1.9 403K
a ./4lib/libc.so.2.9 402K
...
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
使用 tar 和直接檔案系統交換
要将檔案系統的内容複制到新的位置,而無需建立臨時裝入點,您必須首先擁有足夠容納源目錄中所有檔案的空間。
如果使用新的檔案系統來替代一個目錄,可以執行以下操作:
和前面一樣,建立新的分區和檔案系統。 建立源目錄的 .tar 檔案(請參見清單 9)。
清單 9. 建立 .tar 檔案
$ cd /home
$ tar cfvp /tmp/home.tar
對源目錄進行重命名(請參見清單 10)。
清單 10. 對源目錄進行重命名
$ cd ..
$ mv home home.old
建立目錄,并将其權限和所有權設定為與原始目錄相同。 将新的檔案系統裝入到這個新的目錄。 提取 .tar 檔案(請參見清單 11)。
清單 11. 提取 .tar 檔案
$ cd home
$ tar xvfp /tmp/home.tar
如果您需要為現有的檔案系統改變分區(如清單 10 中所示),那麼指令序列是類似的,但是您需要解除安裝現有的檔案系統,而不是對目錄進行重命名(請參見清單 12)。
清單 12. 為現有的檔案系統改變分區
這種方法仍然是安全的,這是因為您擁有舊分區上源檔案系統的完整副本。無論在哪一種解決方案中,您都沒有删除内容或源資料。 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
對複制進行驗證
無論使用 cp 還是 tar,您始終都應該驗證複制過程是否成功完成。盡管 tar 對所複制的檔案進行了證明(使用
v
選項),但是您應該確定在新的檔案系統中正确地建立了這些檔案。
首先,檢查 du 對舊的和新的系統的輸出(請參見清單 13)。
清單 13. 檢查 du 的輸出
$ du -sk /usr
3923068 /usr
$ du -sk /mnt/usr.tmp
3923068 /mnt/usr.tmp
這兩個數字應該是相等的,然而,根據新檔案系統的類型以及舊檔案系統/目錄和新檔案系統/目錄中對應的檔案和目錄的配置設定大小的不同,您可能會發現它們在大小上有些細微的差異。
另一種好的測試方法是,比較源和目标檔案/目錄的數目。您可以使用簡單的
find command
來完成這項工作,如清單 14 所示。
清單 14. 比較源和目标檔案/目錄的數目
$ find /usr |wc -l
347001
$ find /mnt/usr.tmp |wc -l
347001
如果您将檔案從一個檔案系統複制到另一個檔案系統,那麼還有一種好的測試方法,即比較索引節點數目,這将顯示配置設定了多少個索引節點。如果您将檔案從一個檔案系統複制到另一個與其類型完全相同的檔案系統,那麼所使用的索引節點的數目應該是相等的。可以使用帶 -i
指令行選項的 df 指令擷取索引節點的統計資訊,或者在傳統的 UNIX 系統中,不帶參數的 df 可以輸出建立“檔案”的數目。
清單 15 中的示例來自于 Linux 系統。
清單 15. 比較索引節點數目
$ df -i /usr
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 977280 411959 565321 43% /
清單 16 中的示例來自 Solaris。
清單 16. 在 Solaris 中比較索引節點數目
$ /bin/df /usr
/usr (/dev/dsk/c0t0d0s3 ): 9076010 blocks 863695 files
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
更新系統以反映新的組織結構
此時,您應該已經擁有了一個新的檔案系統,其中包含了要移動到這個新檔案系統的檔案系統或目錄的副本。現在,您應該對系統檔案(特别是檔案系統裝入 資訊)進行更新,以反映新的結構。該資訊存儲在 /etc/fstab、/etc/vfstab 中,或通過特定的管理工具來通路,如 HP-UX 上的 SAM。
如果您需要對現有檔案系統中的目錄進行遷移,可以執行下面的操作:
對原始目錄進行重命名。 建立新的目錄。 使用 chown 和 chmod 設定新目錄的所有權和權限。 理想情況下,您應該重新啟動系統以確定使用新的布局。如果您将檔案系統從一個裝置遷移到另一個裝置,那麼必須重新啟動。通常,您可以解除安裝現有的檔案系統,特别是當它為系統目錄(換句話說,/var 或 /usr 下的系統目錄)時。
如果無法進行重新啟動,可以手動地将新的系統裝入到新的裝入點,然後盡可能早地進行重新啟動。
在重新啟動并證明一切正常工作之後,可以删除舊的目錄或重用舊的分區。
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統
遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 回頁首
結束語
在許多情況下,需要對活動或非活動的 UNIX 檔案系統進行複制。可能是因為耗盡了磁盤空間,是以檔案系統需要更大的分區來安裝軟體,甚至是因為硬體将會出現故障。在這些情況下,您需要使用本文中介紹的技巧,将現有的檔案複制到新的檔案系統。
這種複制操作本身存在一定的陷井,即對活動的檔案系統進行複制可能是有風險的,特别是在打開了多個檔案的情況下。您還應該注意,務必避免用要複制的 檔案意外地覆寫分區或現有的檔案。然而正如您所看到的,經過周密的考慮,可以高效地、可靠地對檔案進行遷移,以充分利用更大的空間,即使是在活動的系統中 也可以實作。
參考資料
學習
您可以參閱本文在 developerWorks 全球站點上的 英文原文 。 系統管理者工具包:檢視本系列中的其他部分。 “在 Linux 中使用 ReiserFS 檔案系統”(developerWorks,2006 年 4 月):這篇文章提供了設定 ReiserFS 檔案系統的指導。在按照這篇文章的指導完成了相關設定後,您可以使用本文中的技巧對資料進行遷移。 “讓 UNIX 和 Linux 一起工作”(developerWorks,2006 年 4 月):這篇文章提供了關于共享檔案系統和其他資料的資訊。可以使用這篇文章中介紹的技巧在兩個系統之間高效地遷移資料。 AIX and UNIX:想了解更多内容嗎?developerWorks 的 AIX and UNIX 專區提供數百篇關于 AIX 和 UNIX 的文章以及入門級、中級和進階教程,将讓您打開眼界。 developerWorks 技術事件與網絡廣播:跟蹤最新的 developerWorks 技術事件與網絡廣播。 技術講座:收聽并保持與 IBM 技術專家的同步。 獲得産品和技術 IBM 試用軟體:使用 IBM 軟體開發您的下一個項目,可直接從 developerWorks 下載下傳這些試用軟體。 讨論 參與 “AIX and UNIX”論壇、developerWorks 部落格,并加入 developerWorks 社群。 關于作者 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 遷移和移動 UNIX 檔案系統系統管理者工具包: 遷移和移動 UNIX 檔案系統 Martin Brown 成為職業作家已經超過 7 個年頭。他所撰寫的書籍和文章涵蓋了各種各樣的主題。他所擅長的領域包括大量開發語言和平台——Perl、Python、Java™、 JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows™、 Solaris、Linux、BeOS、Mac OS/X 等等——和 Web 程式設計、系統管理與內建。他是 Microsoft的 Subject Matter Expert (SME) 以及 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 的固定投稿人。他也是 Computerworld、The Apple Blog 及其他站點的部落格。您可以通過 Martin Brown 的網站與他聯系。