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.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.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
蟲 蟲 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 手 冊 頁 翻 譯 計 劃 》 :
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh