.\" .\" 軟體教程 之 man mirror 系統篇 軟體篇 技巧篇 Linux man篇 .\" .\" 原始檔案:mirror-2.3 - mirror.man .\" 檔案敘述:對映遠端檔案的軟體 .\" 檔案編號:LRG.LDTP.MANUAL.006 .\" 翻譯日期:1996/03/03 .\" 翻譯維護:asdchen@ms1.hinet.net O .\" ---------------------------------------------------------------X--- .\" O .\" MIRROR(1L) MIRROR(1L) .\" .TH mirror 1 .SH NAME mirror \- 對映在遠端節點上的檔案 .SH "總覽 SYNOPSIS" mirror [flags] -gsite:pathname mirror [flags] [package-files] .SH "描述 DESCRIPTION" Mirror 是以 Perl 所寫成的一套在執行它的機器與一臺遠端主機 之間使用 ftp 協定複製整個目錄架構及其內容的軟體。它藉由在 傳輸之前比較檔案時間(time-stamps) 以及大小來避免複製不必要 的檔案。除此之外,它還可以選擇性地壓縮(compress, gzip)以及 分割(split)檔案。 .PP 它是寫給檔案維護人員使用的但也可以讓任何想要經由 ftp 傳輸 大量檔案的人使用。 .PP 無論如何叫用它, mirror 總是執行相同的幾個基本步驟。它連線 到遠端節點,在內部建立本地目標目錄(target direction)的目錄 列表,為遠端目錄建立一份目錄列表,比較它們,建立任何必須的 子目錄,傳輸適當的檔案(設定它們的檔案時間以符合遠端節點上 的檔案時間),建立任何符號鏈結,然後移除任何已不必要的物件 (objects) 最後並結束連線。 .PP Mirror 可以處理符號鏈結但並非原本的鏈結。它不會複製擁有者 (owner)或是群組(group)的資訊。如果你需要這些選項其中的任何 一個,使用 rdist(1) 來取代它。 .PP Mirror 系以上面所列語法概述其中的一種方法呼叫執行。 .PP 第一種方式是用來將一個遠端目錄擷取回現行目錄。如果你要對映 的是一個目錄,最好是以斜線('/') 來結束路徑名稱這樣一來遠端 遞迴列表(包含往下子目錄的列表)會比較小或者是使用 -r 旗標 來禁止遞迴(參閱下面所述的 -g 旗標)。這個方式將不會使用到 mirror.defaults 檔案。 .PP 在上面所列語法概述的第二種方式裡,至少需要有一份最少數目的 引數而且 mirror 是由從配置檔案(或標準輸入)裡讀取的設定所 控制。如果可以在 mirror 執行檔所在目錄或是 PERLLIB 路徑裡 找到一個名為 mirror.defaults 檔案,那麼它會首先被載入。這 用來為所有的配置檔提供一般化的預設值。 .PP Mirror 本來是為對映遠端 Un*x 系統的檔案而寫,但是它已逐漸 成長(like topsy)。 .PP .SH "標記 FLAGS" .TP -d 啟動偵錯。如果下達這個引數超過一次,則偵錯層級將會 遞增。目前有用的最大層級是四。 .TP -ppackage 只對映所給定的檔案包裹(package)。 此選項可下達多次 在這種情形下所有給定的檔案包裹都將會對映。沒有這個 選項的話,將對映所有的檔案包裹。檔案包裹 (package) 是一個符合相對於 package 變數的正規表示式(regexp) .TP -R 類似 -p 但是跳過所有的檔案包裹直到它找到給定的檔案 包裹為止。這對於從 mirror 執行失敗而離開的地方重新 開始執行會有用。 .TP -n 除了比較本地以及遠端的目錄之外不做任何事,不會執行 任何檔案傳輸。將偵錯層級設為二,所以你可以看到對於 將要執行之動作的追蹤。 .TP -F 使用暫存的 dbm 檔案以儲放關於檔案的資訊。如果你要 對映一個非常大的目錄這會有用。參閱 use_files 這個 變數。 .TP -g 節點:路徑 .PP 取得給定節點上的所有檔案。如果路徑符合 .*/.+ 那麼 它是目錄的名稱而後面的部份則是所要取得之檔案名稱的 樣板(pattern)。 如果路徑符合 .*/ 則它是目錄的名稱 而且其所有的內容都將會被擷取。另一方面路徑還是用 在 '/' 的樣板。如果你使用 host:/fred 的話,那麼將作出 一份遠端主機上之 / 的完整目錄列表。如果所有你想要 的是目錄 /fred 的內容,則指定 host:/fred/ 才是。 .TP \-r 等於 -krecursive=false .TP \-v 印出 mirror 版本資訊細節並結束。 .TP \-T 強制將任何本地檔案的時間重置成與遠端檔案相同。一般 僅用於以已存在檔案內容之處初始一個對映區域的時候。 .TP \-U [檔案名稱] 把所有上傳的檔案記錄到所給的檔案名稱。記得 mirror 切換到 local_dir 以執行其作業,所以它應該得是完整 (full)的路徑名稱。如果沒有給任何引數,其預設值為 `pwd`/upload_log.day.month.year. .TP \-kkey=value 蓋過任何預設關鍵字的值(key/value) 。 .TP \-m 等於 \-kmode_copy=true .TP -t 等於 \-ktext_mode=true .TP \-f 等於 \-kforce=true .TP \-ssite 等於 \-ksite=site .TP \-uuser 等於 \-kremote_user=user 接著會提示你要求密碼,並且 還會關閉本地回應(echo)以茲配合。這個密碼是用來設定 remote_password 用的。 .TP \-L 只是產生一份輸入的美觀列表版本。 .TP \-G 從遠端機器取得檔案。本地以及遠端目錄必須在命令列上 給定。(這個選項已經不再支援。) .TP \-P 把檔案放上遠端機器。本地以及遠端目錄必須在命令列上 給定。(這個選項已經不再支援。) .TP \-C filename 指定配置檔案。配合 \-P 以及 \-G 選項之配置檔案之需。 (這個選項已經不再支援。) .SH "檔案 Package Files" .PP 配置檔會被剖析成一系列的敘述。空白行及以雜湊(hash)符號起始 的行會被忽略。每個敘述的形式都是 .PP 關鍵字=值 .PP 或是 .PP 關鍵字+值 .PP 你可以在關鍵字以及等號/加號的前面加上空白字元。所有緊跟在 等號/加號之後的每樣事物都是一個值,這包含任何開頭或結尾的 空白字元。等號的版本會將關鍵字設定為該值,而加號的版本會將 該值連結到預設值的結尾上。 .PP 一個敘述可以在除最後一行以外使用 ampersand('&') 字元作結束 以連續超過多行。尾隨在 ampersand 之後的行,都會以移除所有 開頭空白字元的方式附加到目前所在行的後面。 .PP 這裡是一份關鍵字的列表而且它們預設的值放在 square brackets 裡面列出。以星號標出的選專案前還沒有實作出來。 .PP 雖然有很多關鍵字可以設定,內建的預設值將可處理大部分的情況 。一般只需要設定 package, site, remote_dir 以及 local_dir 即可。 .SS .TP package 對所要對映的檔案包裹而言應該得要是個唯一的 名稱。[''] .TP comment 用在報告裡。[''] .TP skip 設定這個專案會使得該檔案包裹被跳過。此值會 被報告為跳過的原因。(這比 commenting the entry out 來得容易。)[''] .TP site 遠端節點的節點名稱或是 IP 位址。[''] .TP remote_dir 所要對映的遠端目錄。參閱 recursed_hard。 [''] .TP local_dir 本地目錄。[''] .TP remote_user 用在遠端節點的使用者名稱。[anonymous] .TP remote_password 用在遠端節點的密碼。[user@localhostname] .TP get_patt 所要擷取之遠端路徑名稱的正規表示式。[.] .TP exclude_patt 所要忽略之遠端目錄名稱的正規表示式。[''] .TP update_local 把 get_patt 設為 local_dir/*。這在如果你只 想要對映遠端檔案服務處中所選定的子目錄時會 有用。[false] .TP local_ignore 所要忽略之本地路徑名稱的正規表示式。對用來 跳過受限(restricted)的本地目錄有用。[''] .TP do_deletes 如果目的(destination) 檔案不存在於來源樹中 (source tree)中則刪除之。[false] .TP delete_patt 檢查所要刪除之本地路徑名稱的正規表示式。不 符合的名稱不會被檢查。所有以此樣板所選出的 檔案都會被檢查是否符合 delete_excl 選項。 [.] .TP delete_get_patt 把 delete_patt 設為 get_patt。[false] .TP delete_excl 永不刪除之本地路徑名稱的正規表示式。[''] .TP save_deletes 把本地檔案儲存到 save_dir 裡取代將其刪除。 [false] .TP save_dir 當本地檔案不存在於遠端節點的時候會被轉移到 此處。[Old] .TP max_delete_files 如果有超過此數的檔案會被刪除,則不進行刪除 動作,只發出警告。若此值系以百分比字元作為 結束的話則此值為取消刪除前之檔案的百分比。 [10%] .TP max_delete_dirs 如果有超過此數的目錄會被刪除,則不進行刪除 動作,只發出警告。若此值系以百分比字元作為 結束的話則此值為取消刪除前之檔案的百分比。 [10%] .TP max_days 如果 >0 的話,忽略比此日數更久以前的檔案。 任何被忽略的檔案將不會被傳輸或刪除。[0] .TP split_max 如果 >0 而且檔案的大小比此值大,該檔案會被 切割以便本地儲存(檔案名稱同時也必須要符合 split_patt 選項)。[0] .TP spilt_patt 要儲存在本地前需先分割之遠端路徑名稱的正規 表示式。[''] .TP split_chunk 檔案所要切割成的大小。[102400] .TP ls_lR_file 包含 ls-lR 的遠端檔案,否則執行遠端 ls 以 取得目錄列表。[''] .TP local_ls_lR_file 包含 ls-lR 的本地檔案,否則使用遠端節點的 ls_lR_file 取代。這在第一次對映一個很大的 檔案包裹時有用。[''] .TP recursive 執行範圍包括子目錄。[true] .TP recuese_hard 必須對每一個子目錄執行 cwd 以及 ls 以產生 遠端 ls 結果。在這種情形下 remote_dir 必須 是絕對的(從 / 開始)而非相對的。使用 ftp 裡的 pwd 指令以找出遠端檔案區域之路徑開始 處。(如果 remote_fs 是 vms 則不可使用。) [false] .TP flags_recursive 傳送給遠端 ls 用以執行遞迴列出的旗標。 ['-lRat'] .TP flags_nonrecursive 傳送給遠端 ls 用以執行非遞迴列出的旗標。 ['-lat'] .TP remote_fs 遠端檔案儲存型態。處理 unix, dls, netware vms, dosftp, macos, lsparse 以及 infomac。 細節參閱下面 FILESTORES 段落。[unix] .TP vms_keep_version 對映 vms 檔案時,保留版本編號。若為 false ,會抽離版本而只保留基本的檔案名稱。[true] .TP vms_xfer_text 要以文字模式(TEXT mode) 傳輸之 vms 檔案的 樣板(忽略大小寫)。 ['readme$|info$|listing$|.c$'] .TP name_mappings 遠端到本地的路徑名稱對映(一個 perl s 指令 eg. s:old:new:)。[''] .TP external_mapping 執行名稱對映的外部函式。[''] .TP get_newer 如果遠端檔案的日期比本地的新則取回。[true] .TP get_size_change 如果檔案的大小與本地的不同則取回。如果檔案 是在擷取時壓縮的,則其大小會自動地忽略掉。 [true] .TP compress_patt 儲存在本地之前要先壓縮之檔案的正規表示式。 參閱 get_size_change 選項。[''] .TP compress_excl 不壓縮之檔案的正規表示式(忽略大小寫)。 [\.(z|gz)$] .TP compress_prog 用來壓縮檔案的程式。如果設為 compress 或是 gzip 這兩個字的話,則將會自動地設定完整的 路徑名稱以及正確的 compress_suffix(副檔名) 。使用 gzip 的時候,會使用第九級 (gzip -9) 壓縮。注意到可以在 compress_prog 之後設定 compress_suffix 將其重設為非標準值。 [compress] .TP compress_suffix 壓縮程式附加到檔案後的字元。若壓縮程式選項 compress_prog 為 compress 的話,則此預設值 為 .Z 。若 compress_prog 為 gzip 的話,則 此預設值為 .gz。[''] .TP compress_conv_patt 如果 compress_prog 是 gzip 的話,符合這個 樣板的檔案會被解壓縮並在本地儲存前以 gzip 重新壓縮。壓縮轉換隻對 compress 到 gzip 此 轉換有意義。[(\.Z|\.taz)$] .TP compress_conv_expr 把副檔名從 compress 轉為 gzip 形式的 perl 表示式。[s/\.Z$/\.gz/;s/\.taz$/\.tgz/] .TP compress_size_floor 只壓縮比此數值小的檔案。[0] .TP force_times 強制要求本地時間符合遠端時間。[yes] .TP retry_call 如果初始連線失敗,一分鐘之後重試一次。這是 用來處理一些反向找尋(lookup)進入(incoming) 主機但有時會在第一次嘗試時超過時間的節點。 [yes] .TP update_log 檔案名稱,系相對於 local_dir 選項之設定值 ,此處會保留一份更新報告。[''] .TP mail_to 將一份系統執行工作記錄寄給這個以逗點隔開之 列表上的人。[''] .TP user 給予本地路徑名稱之使用者名稱或使用者號碼。 [''] .TP group 給予本地路徑名稱之群組名稱或群組號碼。[''] .TP file_mode 給予本地建立之檔案的許可權。[0444] .TP dir_mode 給予本地建立之目錄的許可權。[0755] .TP timeout 在此秒數後結束 ftp 要求。[40] .TP ftp_port 遠端 ftp 伺服程式的埠號。[21] .TP proxy 設為 1 以使用代理轉接(proxy)式的 ftp 服務 。[0] .TP proxy_ftp_port 代理服務之 ftp 伺服程式的埠號。[4514] .TP proxy_gateway 代理服務之名稱,也可用 INTERNET_HOST 變數 來提供。[internet-gateway] .TP mode_copy 指出是否需要複製模式位元(mode bits) 的旗標 。[false] .TP interactive 非批次(non-batch) 傳輸。系以 -g 旗標實作。 [false] .TP text_mode 如果為 true 的話,檔案以文字模式傳輸。Un*x 較喜歡以二進位傳輸所以這是預設值。[false] .TP force 如果為 true 的話,所有檔案都將被傳輸而不去 理會檔案的大小或時間。[false] .TP get_file 以執行 get 而非 put 作為預設。[true] .TP verbose 冗餘訊息。[false] .TP delete_source 一旦傳輸完成後刪除來源檔案。(此選項已不再 支援。)[false] .TP disconnect 檔案包裹結束後從遠端節點結束連線。[false] .TP mail_prog 呼叫執行以將信件寄送給 mail_to 列表的程式 。可以傳遞 mail_subject 引數。預設為 mailx Mail, mail 或任何在你的系統上可用的東西。 [''] .TP mail_subject mirror update ['-s] .TP hostname Mirror 自動地跳過節點名稱符合此主機的檔案 包裹。預設為本地主機名稱。[''] .TP use_files 將 mirroe 所使用的 associative arrays 放到 暫存檔裡。[false] .TP umask 預設不允許任何 setuid 的東西透過。[07000] .TP remote_group 如果存在則設定遠端 'site group' 。[''] .TP remote_gpass 如果存在則設定遠端 'site gpass' 。[''] .TP remote_idle 如果非空(not null),則嘗試並將遠端閒置計時 (idle timer)設為此值。[''] .TP make_bad_symlinks 如果為 true 的話,將會把符號鏈結連到不允許 (不存在)的路徑名稱。舊版預設值為 true 。 [false] .TP follow_local_symlinks 應該要跟從檔案或是目錄所指向處之路徑名稱的 正規表示式。這使得 mirror 不能夠見到本地的 符號鏈結。[''] .TP get_missing 確實取回檔案。當設為 false 的時候,只執行 刪除以及建立符號鏈結。用來刪除比 max_days 更舊的過時檔案而不必擷取這些舊檔案。[true] .PP 每一組關鍵字定義如何對映一份特定的檔案包裹而且應該要以一行 唯一的 package 開始。檔案包裹的名稱用在產生報告及 -p 引數 上,所以應使用較具記憶性的名稱。定義每個檔案包裹所需的最小 需求是 package, site, remote_dir 以及 local_dir 。一旦找到 一行 package 敘述,所有的預設值都會重設。 .PP 如果 package 的名稱是 defaults 的話,則不會連線到任何節點 去,但是所給任何關鍵字的預設值都會改變。一般而言所有的預設 值都在 mirror.defaults 這個將會在任何 package 細節前自動 載入的檔案裡。 .PP .nf # Sample mirror.defaults package=defaults # The LOCAL hostname - if not the same as `hostname` returns # (I advertise the name src.doc.ic.ac.uk but the machine is # really puffin.doc.ic.ac.uk.) hostname=src.doc.ic.ac.uk # Keep all local_dirs relative to here local_dir=/public/ remote_password=ukuug-soft@doc.ic.ac.uk .fi .PP 如果檔案包裹不是 defaults 的話,則 mirror 將會執行下列步驟 。除非偵測出一個內部錯誤,任何錯誤都將會使得目前的檔案包裹 被跳過並且嘗試下一個。 .PP 如果 mirror 並非已經連上該節點,它將會從任何已經連上的節點 離線並嘗試連線到遠端節點的 ftp 伺服程式去。它接著將會使用 所給的遠端使用者名稱及密碼簽入。一旦連上, mirror 開啟二進 位傳輸模式。接下來它切換到所給的本地目錄並掃描之以取得已經 存在的本地檔案的細節。如果必要,將會建立本地目錄。一旦這項 作業完成,會以類似的方式掃描遠端目錄。 Mirror 系切換到遠端 目錄並執行 ftp LIST 指令,然後依據 recursive 選項的值傳遞 flags_recursive 選項或 flags_nonrecursive 選項來完成。此外 也可以擷取一個包含有目錄列表的檔案。每一個遠端路徑名稱都將 會執行任何指定的對映(mapping) 以建立本地路徑名稱。然後任何 由 exclude_patt, max_days, get_newer 以及 get_size_change 關鍵字指定的檢驗都會施行在檔案或符號鏈結上。只有 exclude- patt 檢驗會施行在子目錄上。 .PP 上述過程建立一份所有需要的遠端檔案以及要儲存它們之本地路徑 名稱的列表。 .PP 一旦目錄列表完成,所有需要的檔案都會從遠端節點擷取到它們的 本地路徑名稱。作法是把檔案擷取到目標目錄裡的暫存檔。如果有 需要,暫存檔會被壓縮(compressed, gzip'ed) 或是切割(或者是 壓縮後再切割)。當傳輸成功後再把暫存檔改名。 .SH "檔案儲放 FILESTORES" .PP Mirror 使用遠端目錄列表以找出可以取得哪些檔案。 Mirror 本 來的目標是連線到 unix 的 ftp 伺服程式使用標準的 ls 指令。 要使用於非標準 ls 的 unix 主機或非 unix 的主機上它必須要設 remote_fs 變數以符合將會傳回(return)的目錄列表型別。此變數 (remote_fs) 與其它變數特別是 flags_recursive, recurse_hard 以及 get_size_change 之間有些互動作用。下列的節次將會秀些 在不同檔案服務處執行 ftp 的 dir 指令所產生的結果以及相關 變數的建議。在配合某些設定與眾不同的檔案服務處的時候你可能 必須變更此處所建議的變數設定。 .PP .nf remote_fs=unix total 65 -rw-r--r-- 1 ukuug ukuug 2245 Jun 28 20:06 README -rw-r--r-- 1 ukuug ukuug 61949 Jun 29 19:13 mirror-2.1.tar.gz .fi .PP 這是預設值而且你應該不必重設任何其它變數。 .PP .nf remote_fs=dls 00index.txt 189916 0readme 5793 1_x/ = OS/2 1.x-specific files .fi .PP 這是某些 unix 檔案服務處所使用的 ls 變化型。它在列表中提供 其所知專案的描述。把 flags_recursive 設為 -dtR 即可。 .PP .nf remote_fs=netware - [R----F--] jrd 1646 May 07 21:43 index d [R----F--] jrd 512 Sep 09 10:52 netwire d [R----F--] jrd 512 Sep 02 01:31 pktdrvr d [RWCE-F--] jrd 512 Sep 04 10:55 incoming .fi .PP 這是 Novell 檔案服務處所使用的。把 recurse_hard 設為 true 並且把 flags_recursive 設為空(nothing)的。參閱 remote_dir .PP .nf dosftp 00-index.txt 6,471 13:54 7/20/93 alabama.txt 1,246 23:29 5/08/92 alaska.txt 873 23:29 5/08/92 alberta.txt 2,162 23:29 5/08/92 .fi .PP dosftp 是在 dos 上執行的一套 ftp 伺服程式。recurse_hard 設為 true 並且把 flags_recursive 設為空(nothing)的。 .PP .nf remote_fs=macos -------r-- 0 127 127 Aug 27 13:53 !Gopher Links drwxrwxr-x folder 32 Sep 9 16:30 FAQ drwxrwx-wx folder 0 Sep 9 09:59 incoming .fi .PP macos 是麥金塔(Macintosh) ftp 伺服程式的一個變化型。雖然此 輸出類似於 unix 但是 unix 這個 remote_fs 型態無法應付它是 因為每個檔案有三個大小。把 recurse_hard 設為 true, flags_ recursive 設為空(nothing)的,get_size_change 設為 false 並 將 compress_patt 設為空(最後這個設定是因為此不平常的檔案 名稱會擾亂執行壓縮的 shell 介面)。參閱 remote_dir 設定。 .PP .nf remote_fs=vms USERS:[ANONYMOUS.PUBLIC] 1-README.FIRST;13 9 14-JUN-1993 13:09 [ANONYMOUS] (RWE,RWE,RE,RE) PALTER.DIR;1 1 18-JAN-1993 11:56 [ANONYMOUS] (RWE,RWE,RE,RE) PRESS-RELEASES.DIR;1 1 11-AUG-1992 20:05 [ANONYMOUS] (RWE,RWE,,) .fi .PP alternatively: .PP .nf [VMSSERV.FILES]ALARM.DIR;1 1/3 5-MAR-1993 18:09 [VMSSERV.FILES]ALARM.TXT;1 1/3 4-FEB-1993 12:20 .fi .PP 把 flags_recursive 設為 '[...]' 並將 get_size_change 設為 false。recurse_hard 在 vms 上不能使用。除此之外還可以參閱 vms_keep_version 以及 vms_xfer_text 變數。 .PP .SS .TP remote_fs=infomac 這個特殊型態僅在處理 sumexaim.stanford.edu info-mac 目錄之 help/all-files 有意義。recurse_hard 應該設為 true。 .TP remote_fs=lsparse 允許開啟高階除錯方式重新剖析由 mirror 產生的列表。這隻對於 mirror wizards 有用。 .SH "範例 EXAMPLES" 這裡是從 src.doc.ic.ac.uk 上來的 mirror.defaults 檔案: .PP .nf # This is the default mirror settings used by my site: # src.doc.ic.ac.uk (146.169.2.1) # This is home of the UKUUG Software Distribution Service package=defaults # The LOCAL hostname - if not the same as `hostname` # (I advertise the name src.doc.ic.ac.uk but the machine is # really puffin.doc.ic.ac.uk) hostname=src.doc.ic.ac.uk # Keep all local_dirs relative to here local_dir=/public/ remote_password=ukuug-soft@doc.ic.ac.uk mail_to= # Don't mirror file modes. Set all dirs/files to these dir_mode=0755 file_mode=0444 # By default, files are owned by root.zero user=0 group=0 # # Keep a log file in each updated directory # update_log=.mirror update_log= # Don't overwrite my mirror log with the remote one. # Don't retrieve any of their mirror temporary files. # Don't touch anything whose name begins with a space! # nor any FSP or gopher files... exclude_patt=(^|/)(.mirror$|.in..*.$|MIRROR.LOG|#.*#|.FSP|.c ache|.zipped|lost+found/| ) # Try to compress everything compress_patt=. compress_prog=compress # Don't compress information files, files that don't benefit from # being compressed, files that tell ftpd, gopher, wais... to do things, # the sources for compression programs... # (Note this is the only regexp that is case insensitive.) compress_excl+|^.notar$|-z|.taz$|.tar.Z|.arc$|.zip$|.lzh$|.z oo$|.exe$|.lha$|.zom$|.gif$|.jpeg$|.jpg$|.mpeg$|.au$|read.*me|index|.message|in fo|faq|gzip|compress # Don't delete own mirror log or any .notar files (incl in s ubdirs) delete_excl=(^|/).(mirror|notar)$ # Ignore any local readme files local_ignore=README.doc.ic # Automatically delete local copies of files that the # remote site has zapped do_deletes=true .fi Here are some sample package descriptions: .nf package=gnu comment=Powerful and free Un*x utilities site=prep.ai.mit.edu remote_dir=/pub/gnu # Local_dir+ causes gnu to be appended to the default local_ dir # so making /public/gnu local_dir+gnu exclude_patt+|^ListArchives/|^lost+found/|^scheme-7.0/|^.his tory # I tend to only keep the latest couple of versions of thing s # this stops mirror from retrieving the older versions I've removed max_days=30 do_deletes=false package=X11R5 comment=X Windows (windowing graphics system for Un*x) site=export.lcs.mit.edu remote_dir=/pub/R5 local_dir+computing/graphics/systems/X11/pub/R5 # This is a local symlink to the free-for-all contrib area # and is mirrored elsewhere local_ignore=^contrib$ # Don't compress a thing. It is already compressed # but doesn't look it. compress_patt= package=cnews comment=The C News system site=ftp.cs.toronto.edu remote_dir=/pub/c-news local_dir+computing/usenet/software/transport/c compress_excl+|patches/PATCHDATES|WhereFrom # THIS IS JUST A TEST package=test vms site site=vmsbox.somewhere.ac.uk local_dir=/tmp/copy4 remote_dir=vmsserv/files remote_fs=vms # Must do these settings for VMS flags_recursive=[...] get_size_change=false # and on, and on ... .fi .SH 提示 要增加一個新的檔案包裹,首先開啟 -n 選項檢查它。 .PP 如果你要增加到一個已經存在檔案的地方,那麼通常最好是 force 本地已經存在的檔案時間符合遠端的這樣將會執行與遠端檔案之間 的時間比較。 .PP 嘗試並將所有從相同節點擷取的檔案包裹放在一起。使用這種方式 的話 mirror 將僅需簽入一次。 .PP 記得所有的正規表示式都是 Perl 正規表示式。 .PP 如果遠端節點包含你想展開("flatten out") 到相對應檔案的符號 鏈結,那麼以改變傳送給遠端 ls 旗標的方式執行之。 .nf flags_recursive+L .fi 或是 .nf flags_nonrecursive+L .fi 首先以在遠端節點的 ftp 指令下嘗試 ls -lRatL 的方式來測試 遠端檔案服務處是否有任何符號鏈結迴圈。 .PP 如果你正要對映一個非常大而不常改變的節點,等它初次對映後在 設定中加上 max_days=7 選項。以此方式 mirror 在更新的時候僅 需要注意最近的檔案。然後每個禮拜一次,或者是有必要的時候, 以 -kmax_days=-0 呼叫 mirror 強制執行一次完整的更新。 .PP 如果你不想壓縮從遠端節點取得的任何東西則最簡單的方法就是將 compress_patt 設為空(nothing) 的。 .PP 如果你想在對映一份檔案包裹後執行某個指令那麼有個有用的技巧 是將 mail_prog 變數重設為程式的名稱並將 mail_to 重設為其 引數。 .PP 對於 netware, dosftp, macos 以及 vms 而言一般你應該得要把 remote_dir 設為遠端 ftp 伺服程式的 home 目錄。手動連線並 在切換到子目錄之前使用 pwd 指令找出 home 在哪裡。如果你僅 想要對映整個檔案樹的一部份那麼應該在開頭處給定包含此 home 目錄的完整路徑名稱。 .PP macos 的名稱有時候會包含一些很難讓它們透過 un*x shells 的 字元。因為檔案壓縮是經由 shell 執行最好設 compress_patt= 以便關閉壓縮。 .PP macos 檔案在傳輸時似乎無論如何其大小都會改變,不管是以二進 位或是文字模式。所以最好是設 get_size_change=false 較佳。 .SH "網路觀念(NETIQUETTE)" 如果你要對映一個遠端節點,請遵守該節點管理者對於存取開節點 所設的限制。你通常可以使用標準的 ftp 指令連到該檔案服務處 。任何限制一般會作為簽入時的標題或是放在一個(希望是)明顯 的檔案裡。 .PP 這裡是,我希望是,一些好的一般原則: .PP 只在本地以及遠端節點的工作時間以外對映節點。 .PP 嘗試每天對映一個遠端節點超過一次可能是不友善的。 .PP 在對映一個遠端節點之前,嘗試先從當地的檔案服務處尋找該檔案 包裹,因為沒有人會高興你沒有必要地佔用許多網路頻寬。 .PP 如果你有一個當地的檔案服務處,那麼請告訴別人它的存在讓他們 不必量費頻寬以及 CPU 在遠端節點上。 .PP 要記得在遠端節點改變其存取限制時檢查你的配置檔。 .PP 定期檢查遠端節點是否有新的限制。 .SH "參閱 SEE ALSO" perl(l), ftp(1), mm(1) .SH "蟲蟲 BUGS" 某些網路觀念指引應該要強調。 .PP 應該要能夠如同符號鏈結一般地應付鏈結。 .PP Suffers from creeping featurism. .SH "注意 NOTES" 在 mirror 裡的物件比你所想的還要近! .SH "作者 AUTHOR" Written by Lee McLoughlin . It uses an extended version of the ftp.pl package originally by: Alan R. Martello which uses the chat2.pl pack- age by: Randal L. Schwartz Special thanks to the following people for patches, com- ments and other suggestions that have helped to improve mirror. If I have omitted anyone, please contact me. James Revell Chris Myers Amos Shapira Paul A Vixie Jonathan Kamens Christian Andretzky Kean Stump Anita Eijs Simon E Sperro Aaron Wohl Michael Meissner Michael Graff Bradley Rhoades Edwards Reed Joachim Schrod David Woodgate Pieter Immelman Jost Krieger Copyright (C) 1999 《Best Linux》. All rights reserved. Revised: 99-11-28. .SH "[中文版維護人]" .B 軟體教程 .PP 最新的版本是mirror-2.9.7(20031118) 因此您手上這份1996年的原始文件+1999年的翻譯也許不能滿足您的要求了。請登入 .BI http://sunsite.org.uk/packages/mirror/mirror.html 來參看原文。 .SH "[中文版最新更新]" .B 2001/01/01 .SH "《中國 Linux 論壇 man 手冊頁翻譯計劃》:" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR