开包以后,就会生成mirror/这个目录。因为mirror是一个脚本,所以不需要编译,我们直接就可以拿来使用。Mirror其实是一个链接文件,它link到文件mirror.pl,在使用mirror之前,我们建议您最好将mirror.pl文件中的“$extra_path”和“$big_temp”这两个变量所指定的路径该成符合您的系统需要,如:
$extra_path=/usr/local/bin:/usr/bin:/bin;/usr/ucb:/etc:/usr/etc/:/usr/local/etc’;
$big_temp=’/var/tmp’;
之后使用“ln”命令将mirror.pl这个perl脚本链接到/usr/local/bin目录中:
# ln –s /usr/local/lib/mirror/mirror.pl /usr/local/bin/mirror
这样mirror就安装完毕了。
mirror的使用
调用mirror有两种方式:
# mirror [参数] -gsite:pathname
# mirror [参数] [package-files]
第一种方法是复制远程主机上的一个目录到本地主机用户当前所在目录。第二中方式是由mirror读取我们编辑的配置文件(package-files),根据我们在该文件中的设置复制远程主机的目录文件到我们设定的目录中。在我们下达mirror命令的目录中如果有mirror的配置文件mirror.defailt存在的话,则执行mirror时会首先载入该文件中的内容为所有其它的配置文件提供初始化设置,所以我们需要修改mirror.defaults文件的内容,一般需要修改以下几个地方:
hostname 本地主机名
local_dir 本地下载文件存放目录
remote_password 设置登录用的密码,通常使用完整的E-mail地址
虽然mirror有很多的命令行参数,但是它们中的大多数可能只会用到一两次。如果我们打算维护一个镜像站点,那么最好的做法是将所有的细节问题都记录在配置文件package file中,然后再运行mirror读取该文件中的内容。我们最常用的参数可能是-n和-d。下面就来看看mirror的各种参数:
-d 允许以调试方式运行mirror。如果使用该参数超过一次,那么调试的等级就会递增(例如:-d –d )。目前支持的最大调试等级是四级。
-n 只是比较本地目录与远程目录的不同,不会进行任何文件传输。请将调试等级设为2级,这样我们就可以看到mirror工作的过程。
-g site:path 节点:路径。取得给定节点上path中的所有文件。在path的后面需要加上“/”,否则我们得到的只是该mirror目录的一份目录列表,而不是整个目录中的所有文件。
-p package 当使用多个package文件时。只选用给定的package。我们可以多次使用该选项,以使我们选定的packages都可以被mirrored,如果不使用该参数,那么将mirror载入所有的packages文件。
-R package 与-p参数类似,但将跳过所有的packages文件,直到它找到给定的package为止。如果我们启动mirror后,中途失败时,该选项就会非常有用,它将使mirror 从断点处继续开始mirror。
-F 使用临时dbm(数据库)文件以存放有关信息。如果我们要mirror一个很大的文件时,就需要使用这个参数。
-r 相当于-k recursive=false
-v 显示mirror的版本信息并退出。
-T 强制将本地镜像目录中所有文件的时间复位成与远程主机相同。一般只用于初始化以其它方式(如CD-ROM)获得文件的目录。
-Ufilename 将所有传输的文件记录到我们给定的文件名中。
-k key=value 覆盖任何默认的参数。
-m 相当于-k mode_copy=true。
-t 相当于-k text_mode=true。
-f 相当于-k force=true。
-s site 相当于-k site=site。
-u user 相当于-k remote_user=user,我们这时就可以提供一个进入远主机的密码。
-L 仅仅是打印一个精致的输入译本然后退出。
如果我们使用命令行的方式来mirror的话,则所有mirror回来的文件都将存放在我们当前所在的目录中。所以在执行mirror命令之前,我们一定要选择好合适的目录,再进行传输。举例来说,如果想将[url]ftp://ftp.openunix.org/[/url]这个站点的 /pub/bluepoint/starpreview/这个目录中的文件全部mirror回来,那么我们可以先在/home/ftp/pub目录下建造一个bluepoint/starpreview/目录,然后进入该目录并执行:
# mirror –d –d –g ftp.openunix.org:/pub/bluepoint/starpreview/&
这样就可以将ftp.openunix.org/pub/bluepoint/starpreview/目录中所有的文件都mirror回来了。要注意的是,在上面这条命令中的starpreview后一定要有“/”,否则我们将得到ftp.openunix.org上的一个完整目录列表。
在多数情况下,我们都是使用package文件来执行mirror的。这样我们可以为我们要mirror的每一个FTP站点编辑一个package文件,然后根据需要使用不同的文件来mirror各个FTP站点,编辑package的方法如下:
1.在合适的位置,如/usr/local/lib/mirror建立一个专门用来存放package文件的目录:
# mkdir /usr/local/lib/mirror/pack(目录名可任选)
2.如果要mirror ftp.openunix.org这个FTP站点下的/pub/linux/,那么我们可以在pack目录下创建一个open_linux的文件,而具体的内容可以参考下面的例子:
#
# 使用package指定mirror使用的配置文件为open_linux
package = open_linux
# 指定我们要mirror的FTP站点,用主机名或IP地址均可
site = ftp.openunix.org
# 指定登录身份,通常都是匿名登录,所以我们可以使用ftp或
# anonymous
remote_account = ftp
# 指定登录需要的密码,因为是匿名登录所以我们需要使用电子
# 邮件地址作为登录FTP服务器的密码
remote_password = user@somewhere.com
# 指定我们要mirroe的目录
remote_dir = /pub/linux
# 指定存放文件的目录
local_dir = /home/ftp/pub/linux/
# 指定文件传输的方式,以递归方式mirror该目录中的所有子目录
recursive = true
# 在文件传回本地之前,将文件压缩
compress_patt = true
以上就是一般的package文件的设置,如果想了解更多的内容的话,可以参考mirror的doc/ 下的各种文档资料。设置好package文件之后,我们可以在/usr/local/lib/mirror目录中执行:
# mirror –d –d pack/open_linux &
这样mirror就可以在后台执行它的工作了。在我们首次执行mirror的时候,可能会花很长的时间才能将FTP站点的各种文件都mirror到我们自己的服务器上来,但是完成之后之后,mirror以后只是读取两个站点之间不同的文件而已,这样会节省我们很多的时间。在mirror可以正常运作之后,我们可以将它放到crontab中,然后由时钟守护进程自动定时为我们执行mirror操作:
# crontab –e
15 3 * * 2,6 mirror –d –d /usr/local/lib/pack/open_linux
这表示“每星期二和星期六的03:15 执行mirror –d –d open_linux。这样就能保证我们的FTP服务器上始终都能有最新的软件了。