sourCEntral - mobile manpages

pdf

mirror

NAME

mirror − 映射在遠端節點上的檔案

總覽 SYNOPSIS

mirror [flags] -gsite:pathname mirror [flags] [package-files]

描述 DESCRIPTION

Mirror 是以 Perl 所寫成的一套在執行它的機器與一台遠端主機 之間使用 ftp 協定複製整個目錄架構及其內容的軟體。它藉由在 傳輸之前比較檔案時間(time-stamps) 以及大小來避免拷貝不必要 的檔案。除此之外,它還可以選擇性地壓縮(compress, gzip)以及 分割(split)檔案。

它是寫給檔案維護人員使用的但也可以讓任何想要經由 ftp 傳輸 大量檔案的人使用。

無論如何叫用它, mirror 總是執行相同的幾個基本步驟。它連線 到遠端節點,在內部建立本地目標目錄(target direction)的目錄 列表,為遠端目錄建立一份目錄列表,比較它們,建立任何必須的 子目錄,傳輸適當的檔案(設定它們的檔案時間以符合遠端節點上 的檔案時間),建立任何符號鏈結,然後移除任何已不必要的物件 (objects) 最後並結束連線。

Mirror 可以處理符號鏈結但並非原本的鏈結。它不會複製擁有者 (owner)或是群組(group)的資訊。如果你需要這些選項其中的任何 一個,使用 rdist(1) 來取代它。

Mirror 系以上面所列語法概述其中的一種方法呼叫執行。

第一種方式是用來將一個遠端目錄擷取回現行目錄。如果你要映射 的是一個目錄,最好是以斜線(’/’) 來結束路徑名稱這樣一來遠端 遞回列表(包含往下子目錄的列表)會比較小或者是使用 -r 旗標 來禁止遞回(參閱下面所述的 -g 旗標)。這個方式將不會使用到 mirror.defaults 檔案。

在上面所列語法概述的第二種方式裏,至少需要有一份最少數目的 參數而且 mirror 是由從配置檔案(或標準輸入)裏讀取的設定所 控制。如果可以在 mirror 執行檔所在目錄或是 PERLLIB 路徑裏 找到一個名為 mirror.defaults 檔案,那麼它會首先被載入。這 用來為所有的配置檔提供一般化的預設值。

Mirror 本來是為映射遠端 Un*x 系統的檔案而寫,但是它已逐漸 成長(like topsy)。

標記 FLAGS

-d

啟動偵錯。如果下達這個參數超過一次,則偵錯層級將會 遞增。目前有用的最大層級是四。

-ppackage

只映射所給定的檔案包裹(package)。 此選項可下達多次 在這種情形下所有給定的檔案包裹都將會映射。沒有這個 選項的話,將映射所有的檔案包裹。檔案包裹 (package) 是一個符合相對於 package 變數的正規表示式(regexp)

-R

類似 -p 但是跳過所有的檔案包裹直到它找到給定的檔案 包裹為止。這對於從 mirror 執行失敗而離開的地方重新 開始執行會有用。

-n

除了比較本地以及遠端的目錄之外不做任何事,不會執行 任何檔案傳輸。將偵錯層級設為二,所以你可以看到對於 將要執行之動作的追蹤。

-F

使用暫存的 dbm 檔案以儲放關於檔案的資訊。如果你要 映射一個非常大的目錄這會有用。參閱 use_files 這個 變數。

-g

節點:路徑

取得給定節點上的所有檔案。如果路徑符合 .*/.+ 那麼 它是目錄的名稱而後面的部份則是所要取得之檔案名稱的 樣板(pattern)。 如果路徑符合 .*/ 則它是目錄的名稱 而且其所有的內容都將會被擷取。另一方面路徑還是用 在 ’/’ 的樣板。如果你使用 host:/fred 的話,那麼將作出 一份遠端主機上之 / 的完整目錄列表。如果所有你想要 的是目錄 /fred 的內容,則指定 host:/fred/ 才是。

−r

等於 -krecursive=false

−v

印出 mirror 版本資訊細節並結束。

−T

強制將任何本地檔案的時間重置成與遠端檔案相同。一般 僅用於以已存在檔案內容之處初始一個映射區域的時候。

−U [檔案名稱]

把所有上傳的檔案記錄到所給的檔案名稱。記得 mirror 切換到 local_dir 以執行其作業,所以它應該得是完整 (full)的路徑名稱。如果沒有給任何參數,其預設值為 ‘pwd‘/upload_log.day.month.year.

−kkey=value

蓋過任何預設關鍵字的值(key/value) 。

−m

等於 −kmode_copy=true

-t

等於 −ktext_mode=true

−f

等於 −kforce=true

−ssite

等於 −ksite=site

−uuser

等於 −kremote_user=user 接著會提示你要求密碼,並且 還會關閉本地回應(echo)以茲配合。這個密碼是用來設定 remote_password 用的。

−L

只是產生一份輸入的美觀列表版本。

−G

從遠端機器取得檔案。本地以及遠端目錄必須在命令列上 給定。(這個選項已經不再支援。)

−P

把檔案放上遠端機器。本地以及遠端目錄必須在命令列上 給定。(這個選項已經不再支援。)

−C filename

指定配置檔案。配合 −P 以及 −G 選項之配置檔案之需。 (這個選項已經不再支援。)

檔案 Package Files

配置檔會被剖析成一系列的敘述。空白行及以雜湊(hash)符號起始 的行會被忽略。每個敘述的形式都是

關鍵字=值

或是

關鍵字+值

你可以在關鍵字以及等號/加號的前面加上空白字元。所有緊跟在 等號/加號之後的每樣事物都是一個值,這包含任何開頭或結尾的 空白字元。等號的版本會將關鍵字設定為該值,而加號的版本會將 該值連結到預設值的結尾上。

一個敘述可以在除最後一行以外使用 ampersand(’&’) 字元作結束 以連續超過多行。尾隨在 ampersand 之後的行,都會以移除所有 開頭空白字元的方式附加到目前所在行的後面。

這裏是一份關鍵字的列表而且它們預設的值放在 square brackets 裏面列出。以星號標出的選項目前還沒有實作出來。

雖然有很多關鍵字可以設定,內建的預設值將可處理大部分的情況 。一般只需要設定 package, site, remote_dir 以及 local_dir 即可。
package

對所要映射的檔案包裹而言應該得要是個唯一的 名稱。[’’]

comment

用在報告裏。[’’]

skip

設定這個項目會使得該檔案包裹被跳過。此值會 被報告為跳過的原因。(這比 commenting the entry out 來得容易。)[’’]

site

遠端節點的節點名稱或是 IP 位址。[’’]

remote_dir

所要映射的遠端目錄。參閱 recursed_hard。 [’’]

local_dir

本地目錄。[’’]

remote_user

用在遠端節點的使用者名稱。[anonymous]

remote_password

用在遠端節點的密碼。[user@localhostname]

get_patt

所要擷取之遠端路徑名稱的正規表示式。[.]

exclude_patt

所要忽略之遠端目錄名稱的正規表示式。[’’]

update_local

把 get_patt 設為 local_dir/*。這在如果你只 想要映射遠端檔案服務處中所選定的子目錄時會 有用。[false]

local_ignore

所要忽略之本地路徑名稱的正規表示式。對用來 跳過受限(restricted)的本地目錄有用。[’’]

do_deletes

如果目的(destination) 檔案不存在於來源樹中 (source tree)中則刪除之。[false]

delete_patt

檢查所要刪除之本地路徑名稱的正規表示式。不 符合的名稱不會被檢查。所有以此樣板所選出的 檔案都會被檢查是否符合 delete_excl 選項。 [.]

delete_get_patt

把 delete_patt 設為 get_patt。[false]

delete_excl

永不刪除之本地路徑名稱的正規表示式。[’’]

save_deletes

把本地檔案儲存到 save_dir 裏取代將其刪除。 [false]

save_dir

當本地檔案不存在於遠端節點的時候會被轉移到 此處。[Old]

max_delete_files

如果有超過此數的檔案會被刪除,則不進行刪除 動作,只發出警告。若此值系以百分比字元作為 結束的話則此值為取消刪除前之檔案的百分比。 [10%]

max_delete_dirs

如果有超過此數的目錄會被刪除,則不進行刪除 動作,只發出警告。若此值系以百分比字元作為 結束的話則此值為取消刪除前之檔案的百分比。 [10%]

max_days

如果 >0 的話,忽略比此日數更久以前的檔案。 任何被忽略的檔案將不會被傳輸或刪除。[0]

split_max

如果 >0 而且檔案的大小比此值大,該檔案會被 切割以便本地儲存(檔案名稱同時也必須要符合 split_patt 選項)。[0]

spilt_patt

要儲存在本地前需先分割之遠端路徑名稱的正規 表示式。[’’]

split_chunk

檔案所要切割成的大小。[102400]

ls_lR_file

包含 ls-lR 的遠端檔案,否則執行遠端 ls 以 取得目錄列表。[’’]

local_ls_lR_file

包含 ls-lR 的本地檔案,否則使用遠端節點的 ls_lR_file 取代。這在第一次映射一個很大的 檔案包裹時有用。[’’]

recursive

執行范圍包括子目錄。[true]

recuese_hard

必須對每一個子目錄執行 cwd 以及 ls 以產生 遠端 ls 結果。在這種情形下 remote_dir 必須 是絕對的(從 / 開始)而非相對的。使用 ftp 裏的 pwd 指令以找出遠端檔案區域之路徑開始 處。(如果 remote_fs 是 vms 則不可使用。) [false]

flags_recursive

傳送給遠端 ls 用以執行遞回列出的旗標。 [’-lRat’]

flags_nonrecursive

傳送給遠端 ls 用以執行非遞回列出的旗標。 [’-lat’]

remote_fs

遠端檔案儲存型態。處理 unix, dls, netware vms, dosftp, macos, lsparse 以及 infomac。 細節參閱下面 FILESTORES 段落。[unix]

vms_keep_version

映射 vms 檔案時,保留版本編號。若為 false ,會抽離版本而只保留基本的檔案名稱。[true]

vms_xfer_text

要以文字模式(TEXT mode) 傳輸之 vms 檔案的 樣板(忽略大小寫)。 [’readme$|info$|listing$|.c$’]

name_mappings

遠端到本地的路徑名稱對映(一個 perl s 指令 eg. s:old:new:)。[’’]

external_mapping

執行名稱對映的外部函式。[’’]

get_newer

如果遠端檔案的日期比本地的新則取回。[true]

get_size_change

如果檔案的大小與本地的不同則取回。如果檔案 是在擷取時壓縮的,則其大小會自動地忽略掉。 [true]

compress_patt

儲存在本地之前要先壓縮之檔案的正規表示式。 參閱 get_size_change 選項。[’’]

compress_excl

不壓縮之檔案的正規表示式(忽略大小寫)。 [.(z|gz)$]

compress_prog

用來壓縮檔案的程式。如果設為 compress 或是 gzip 這兩個字的話,則將會自動地設定完整的 路徑名稱以及正確的 compress_suffix(副檔名) 。使用 gzip 的時候,會使用第九級 (gzip -9) 壓縮。注意到可以在 compress_prog 之後設定 compress_suffix 將其重設為非標準值。 [compress]

compress_suffix

壓縮程式附加到檔案後的字元。若壓縮程式選項 compress_prog 為 compress 的話,則此預設值 為 .Z 。若 compress_prog 為 gzip 的話,則 此預設值為 .gz。[’’]

compress_conv_patt

如果 compress_prog 是 gzip 的話,符合這個 樣板的檔案會被解壓縮並在本地儲存前以 gzip 重新壓縮。壓縮轉換只對 compress 到 gzip 此 轉換有意義。[(.Z|.taz)$]

compress_conv_expr

把副檔名從 compress 轉為 gzip 形式的 perl 表示式。[s/.Z$/.gz/;s/.taz$/.tgz/]

compress_size_floor

只壓縮比此數值小的檔案。[0]

force_times

強制要求本地時間符合遠端時間。[yes]

retry_call

如果初始連線失敗,一分鐘之後重試一次。這是 用來處理一些反向找尋(lookup)進入(incoming) 主機但有時會在第一次嘗試時超過時間的節點。 [yes]

update_log

檔案名稱,系相對於 local_dir 選項之設定值 ,此處會保留一份更新報告。[’’]

mail_to

將一份系統執行工作記錄寄給這個以逗點隔開之 列表上的人。[’’]

user

給予本地路徑名稱之使用者名稱或使用者號碼。 [’’]

group

給予本地路徑名稱之群組名稱或群組號碼。[’’]

file_mode

給予本地建立之檔案的權限。[0444]

dir_mode

給予本地建立之目錄的權限。[0755]

timeout

在此秒數後結束 ftp 要求。[40]

ftp_port

遠端 ftp 伺服程式的埠號。[21]

proxy

設為 1 以使用代理轉接(proxy)式的 ftp 服務 。[0]

proxy_ftp_port

代理服務之 ftp 伺服程式的埠號。[4514]

proxy_gateway

代理服務之名稱,也可用 INTERNET_HOST 變數 來提供。[internet-gateway]

mode_copy

指出是否需要拷貝模式位元(mode bits) 的旗標 。[false]

interactive

非批次(non-batch) 傳輸。系以 -g 旗標實作。 [false]

text_mode

如果為 true 的話,檔案以文字模式傳輸。Un*x 較喜歡以二進位傳輸所以這是預設值。[false]

force

如果為 true 的話,所有檔案都將被傳輸而不去 理會檔案的大小或時間。[false]

get_file

以執行 get 而非 put 作為預設。[true]

verbose

冗餘訊息。[false]

delete_source

一旦傳輸完成後刪除來源檔案。(此選項已不再 支援。)[false]

disconnect

檔案包裹結束後從遠端節點結束連線。[false]

mail_prog

呼叫執行以將信件寄送給 mail_to 列表的程式 。可以傳遞 mail_subject 參數。預設為 mailx Mail, mail 或任何在你的系統上可用的東西。 [’’]

mail_subject

mirror update [’-s]

hostname Mirror

自動地跳過節點名稱符合此主機的檔案 包裹。預設為本地主機名稱。[’’]

use_files

將 mirroe 所使用的 associative arrays 放到 暫存檔裏。[false]

umask

預設不允許任何 setuid 的東西通過。[07000]

remote_group

如果存在則設定遠端 ’site group’ 。[’’]

remote_gpass

如果存在則設定遠端 ’site gpass’ 。[’’]

remote_idle

如果非空(not null),則嘗試並將遠端閒置計時 (idle timer)設為此值。[’’]

make_bad_symlinks

如果為 true 的話,將會把符號鏈結連到不允許 (不存在)的路徑名稱。舊版預設值為 true 。 [false]

follow_local_symlinks

應該要跟從檔案或是目錄所指向處之路徑名稱的 正規表示式。這使得 mirror 不能夠見到本地的 符號鏈結。[’’]

get_missing

確實取回檔案。當設為 false 的時候,只執行 刪除以及建立符號鏈結。用來刪除比 max_days 更舊的過時檔案而不必擷取這些舊檔案。[true]

每一組關鍵字定義如何映射一份特定的檔案包裹而且應該要以一行 唯一的 package 開始。檔案包裹的名稱用在產生報告及 -p 參數 上,所以應使用較具記憶性的名稱。定義每個檔案包裹所需的最小 需求是 package, site, remote_dir 以及 local_dir 。一旦找到 一行 package 敘述,所有的預設值都會重設。

如果 package 的名稱是 defaults 的話,則不會連線到任何節點 去,但是所給任何關鍵字的預設值都會改變。一般而言所有的預設 值都在 mirror.defaults 這個將會在任何 package 細節前自動 載入的檔案裏。

# 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 AT doc DOT ic DOT ac DOT uk

如果檔案包裹不是 defaults 的話,則 mirror 將會執行下列步驟 。除非偵測出一個內部錯誤,任何錯誤都將會使得目前的檔案包裹 被跳過並且嘗試下一個。

如果 mirror 並非已經連上該節點,它將會從任何已經連上的節點 離線並嘗試連線到遠端節點的 ftp 伺服程式去。它接著將會使用 所給的遠端使用者名稱及密碼簽入。一旦連上, mirror 開啟二進 位傳輸模式。接下來它切換到所給的本地目錄並掃描之以取得已經 存在的本地檔案的細節。如果必要,將會建立本地目錄。一旦這項 作業完成,會以類似的方式掃描遠端目錄。 Mirror 系切換到遠端 目錄並執行 ftp LIST 指令,然後依據 recursive 選項的值傳遞 flags_recursive 選項或 flags_nonrecursive 選項來完成。此外 也可以擷取一個包含有目錄列表的檔案。每一個遠端路徑名稱都將 會執行任何指定的對映(mapping) 以建立本地路徑名稱。然後任何 由 exclude_patt, max_days, get_newer 以及 get_size_change 關鍵字指定的檢驗都會施行在檔案或符號鏈結上。只有 exclude- patt 檢驗會施行在子目錄上。

上述過程建立一份所有需要的遠端檔案以及要儲存它們之本地路徑 名稱的列表。

一旦目錄列表完成,所有需要的檔案都會從遠端節點擷取到它們的 本地路徑名稱。作法是把檔案擷取到目標目錄裏的暫存檔。如果有 需要,暫存檔會被壓縮(compressed, gzip’ed) 或是切割(或者是 壓縮後再切割)。當傳輸成功後再把暫存檔改名。

檔案儲放 FILESTORES

Mirror 使用遠端目錄列表以找出可以取得哪些檔案。 Mirror 本 來的目標是連線到 unix 的 ftp 伺服程式使用標準的 ls 指令。 要使用於非標準 ls 的 unix 主機或非 unix 的主機上它必須要設 remote_fs 變數以符合將會傳回(return)的目錄列表類型。此變數 (remote_fs) 與其它變數特別是 flags_recursive, recurse_hard 以及 get_size_change 之間有些交互作用。下列的節次將會秀些 在不同檔案服務處執行 ftp 的 dir 指令所產生的結果以及相關 變數的建議。在配合某些設定與眾不同的檔案服務處的時候你可能 必須變更此處所建議的變數設定。

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

這是預設值而且你應該不必重設任何其它變數。

remote_fs=dls
00index.txt 189916
0readme 5793
1_x/ = OS/2 1.x-specific files

這是某些 unix 檔案服務處所使用的 ls 變化型。它在列表中提供 其所知項目的描述。把 flags_recursive 設為 -dtR 即可。

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

這是 Novell 檔案服務處所使用的。把 recurse_hard 設為 true 並且把 flags_recursive 設為空(nothing)的。參閱 remote_dir

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

dosftp 是在 dos 上執行的一套 ftp 伺服程式。recurse_hard 設為 true 並且把 flags_recursive 設為空(nothing)的。

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

macos 是麥金塔(Macintosh) ftp 伺服程式的一個變化型。雖然此 輸出類似於 unix 但是 unix 這個 remote_fs 型態無法應付它是 因為每個檔案有三個大小。把 recurse_hard 設為 true, flags_ recursive 設為空(nothing)的,get_size_change 設為 false 並 將 compress_patt 設為空(最後這個設定是因為此不平常的檔案 名稱會擾亂執行壓縮的 shell 界面)。參閱 remote_dir 設定。

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,,)

alternatively:

[VMSSERV.FILES]ALARM.DIR;1 1/3 5-MAR-1993 18:09
[VMSSERV.FILES]ALARM.TXT;1 1/3 4-FEB-1993 12:20

把 flags_recursive 設為 ’[...]’ 並將 get_size_change 設為 false。recurse_hard 在 vms 上不能使用。除此之外還可以參閱 vms_keep_version 以及 vms_xfer_text 變數。
remote_fs=infomac

這個特殊型態僅在處理 sumexaim.stanford.edu info-mac 目錄之 help/all-files 有意義。recurse_hard 應該設為 true。

remote_fs=lsparse

允許開啟高階除錯方式重新剖析由 mirror 產生的列表。這只對於 mirror wizards 有用。

範例 EXAMPLES

這裏是從 src.doc.ic.ac.uk 上來的 mirror.defaults 檔案:

# 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 AT doc DOT ic DOT ac DOT 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
Here are some sample package descriptions:
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 ...

提示

要增加一個新的檔案包裹,首先打開 -n 選項檢查它。

如果你要增加到一個已經存在檔案的地方,那麼通常最好是 force 本地已經存在的檔案時間符合遠端的這樣將會執行與遠端檔案之間 的時間比較。

嘗試並將所有從相同節點擷取的檔案包裹放在一起。使用這種方式 的話 mirror 將僅需簽入一次。

記得所有的正規表示式都是 Perl 正規表示式。

如果遠端節點包含你想展開("flatten out") 到相對應檔案的符號 鏈結,那麼以改變傳送給遠端 ls 旗標的方式執行之。
flags_recursive+L
或是
flags_nonrecursive+L
首先以在遠端節點的 ftp 指令下嘗試 ls -lRatL 的方式來測試 遠端檔案服務處是否有任何符號鏈結回圈。

如果你正要映射一個非常大而不常改變的節點,等它初次映射後在 設定中加上 max_days=7 選項。以此方式 mirror 在更新的時候僅 需要注意最近的檔案。然後每個禮拜一次,或者是有必要的時候, 以 -kmax_days=-0 呼叫 mirror 強制執行一次完整的更新。

如果你不想壓縮從遠端節點取得的任何東西則最簡單的方法就是將 compress_patt 設為空(nothing) 的。

如果你想在映射一份檔案包裹後執行某個指令那麼有個有用的技巧 是將 mail_prog 變數重設為程式的名稱並將 mail_to 重設為其 參數。

對於 netware, dosftp, macos 以及 vms 而言一般你應該得要把 remote_dir 設為遠端 ftp 伺服程式的 home 目錄。手動連線並 在切換到子目錄之前使用 pwd 指令找出 home 在哪裏。如果你僅 想要映射整個檔案樹的一部份那麼應該在開頭處給定包含此 home 目錄的完整路徑名稱。

macos 的名稱有時候會包含一些很難讓它們通過 un*x shells 的 字元。因為檔案壓縮是經由 shell 執行最好設 compress_patt= 以便關閉壓縮。

macos 檔案在傳輸時似乎無論如何其大小都會改變,不管是以二進 位或是文字模式。所以最好是設 get_size_change=false 較佳。

網路觀念(NETIQUETTE)

如果你要映射一個遠端節點,請遵守該節點管理者對於存取開節點 所設的限制。你通常可以使用標準的 ftp 指令連到該檔案服務處 。任何限制一般會作為簽入時的標題或是放在一個(希望是)明顯 的檔案裏。

這裏是,我希望是,一些好的一般原則:

只在本地以及遠端節點的工作時間以外映射節點。

嘗試每天映射一個遠端節點超過一次可能是不友善的。

在映射一個遠端節點之前,嘗試先從當地的檔案服務處尋找該檔案 包裹,因為沒有人會高興你沒有必要地佔用許多網路頻寬。

如果你有一個當地的檔案服務處,那麼請告訴別人它的存在讓他們 不必量費頻寬以及 CPU 在遠端節點上。

要記得在遠端節點改變其存取限制時檢查你的配置檔。

定期檢查遠端節點是否有新的限制。

參閱 SEE ALSO

perl(l), ftp(1), mm(1)

蟲蟲 BUGS

某些網路觀念指引應該要強調。

應該要能夠如同符號鏈結一般地應付鏈結。

Suffers from creeping featurism.

注意 NOTES

在 mirror 裏的物件比你所想的還要近!

作者 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.

[中文版維護人]

軟體教程

最新的版本是mirror-2.9.7(20031118) 因此您手上這份1996年的原始文件+1999年的翻譯也許不能滿足您的要求了。請登入 http://sunsite.org.uk/packages/mirror/mirror.html 來參看原文。

[中文版最新更新]

2001/01/01

《中國 Linux 論壇 man手冊頁翻譯計劃》:

http://cmpp.linuxforum.net

pdf