Manpages

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

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

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh