mirror -
對映在遠端節點上的檔案
mirror [flags] -gsite:pathname mirror [flags] [package-files]
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)。
- -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
選項之配置檔案之需。
(這個選項已經不再支援。)
配置檔會被剖析成一系列的敘述。空白行及以雜湊(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/
[email protected]
如果檔案包裹不是 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) 或是切割(或者是
壓縮後再切割)。當傳輸成功後再把暫存檔改名。
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 有用。
這裡是從 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/
[email protected]
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 較佳。
如果你要對映一個遠端節點,請遵守該節點管理者對於存取開節點
所設的限制。你通常可以使用標準的
ftp
指令連到該檔案服務處
。任何限制一般會作為簽入時的標題或是放在一個(希望是)明顯
的檔案裡。
這裡是,我希望是,一些好的一般原則:
只在本地以及遠端節點的工作時間以外對映節點。
嘗試每天對映一個遠端節點超過一次可能是不友善的。
在對映一個遠端節點之前,嘗試先從當地的檔案服務處尋找該檔案
包裹,因為沒有人會高興你沒有必要地佔用許多網路頻寬。
如果你有一個當地的檔案服務處,那麼請告訴別人它的存在讓他們
不必量費頻寬以及 CPU
在遠端節點上。
要記得在遠端節點改變其存取限制時檢查你的配置檔。
定期檢查遠端節點是否有新的限制。
perl(l),
ftp(1),
mm(1)
某些網路觀念指引應該要強調。
應該要能夠如同符號鏈結一般地應付鏈結。
Suffers from creeping featurism.
在 mirror
裡的物件比你所想的還要近!
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
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh