自动上传Auto-FTP&Mirror的介绍与使用

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

用FTP传档案虽不难,但若老是得要您亲自手动来传,这不仅累人而已也更糟蹋了Linux这多人多工操作系统!

本文便是Auto-ftp和Mirror这二种档案传的输应用,希望藉由cron作业方式让您的传档作业能达到自动化。

各位亲爱的读者在使用Linux时,是否时常必须固定到某些FTPsite传回一些档案,或是公司内部分支机构必须定时将某些file传回总公司以便处理,这时如果您还固定用人工手动作ftp档案传输的话,那麽您就落伍了,平平白白浪费了Linux这多人多工的作业系统所赋予您的PC强大的功能了。

本文要介绍的是除了mail-ftp之外的两个应用:Auto-ftp和Mirror这二种档案传输应用,并利用cron将之自动化的作业方式。希望经由本文的介绍,能够让您的作业尽量自动化,减少人工的介入并尽量发挥Linux或unix的多工特性。

版本说明

1.本文使用SlackwareLinux2.1.0作范例,若您使用的是SunOS,IBM AIX等vendorsUnix 的话,Auto-ftp部份应可正常工作(或只需作少许修改),Mirror部份则须先安装Perl-4.036。

2.Perl最新版本为Perl-5.00Beta,Mirror使用时会有错误讯息,笔者认为应该是前後版本相容性的问题。笔者强烈建议您使用Perl-4.036以维持正常。Perl-5.00和Perl-4.036均可自NCTUCCCA.NCTU.edu.twFTPserver下/UNIX/gnu目录取得。

Auto-ftp传输档案

ftp是TCP/IP协定的叁大主要应用—telnet、ftp、email之一,平时在unix和unix系统之间主要的档案传输,就以ftp使用得最普遍与频繁,譬如说,我要将Linux1.1.6x的patchfile,自NCTUCCCA.NCTU.edu.tw传回我的Linux主机的话,那麽我就可以用Anonymousftp经由下列作法来达成这个目的。(编按:请参考本刊光碟片AUTHORFTPFTP1.txt)

基本的Anonymousftp操作大抵不脱此操作过程。但若您是某大企业分支机构的人员,每天得把日结资料传回总公司去、或是您在Internet网路上,每周日凌晨3:00在Internet线路较空闲时去国外某大ftpsite传回一些定期更新的档案的话,您该不会凌晨3:00爬起来传档案吧?

这时用Auto-ftp加上cron的定时功能,必定能够对您的工作有相当的帮助。ftp有个参数-n是可以作ftpauto-login的功能,可是我们一般在用ftp时却甚少使用到,下例的shellscript即以ftpauto-login来作说明。

这时执行getpatch:

getpatch即会将linux-1.1.59.tar.gz与patch6*自NCTUCCCA.NCTU.edu.tw这个ftp server的/Operating-Systems/Linux/kernel/v1.1目录传回您所在的SiteHomedirectory下的patch目录中。

相同的,您若要将档案送出,只要将source和target,me,mypass等变数作些符合您所在环境条件的修改,并将mget改成mput,即可将档案送出。

这时再将Auto-ftp和cron定时功能结合,即可作定时的Auto-ftp档案传输。

#----------------------------------------------------------------

% cat ./cron_file

# Minutes Hour Day- Month Day- Command

# of- of-

# Month Week

# 0-59 0-23 1-31 1-12 0-6

#----------------------------------------------------------------

10 2 * * * /user1/roylin/getpatch

# 定义每天凌晨2:10执行getpatch

用crontab指令启动cron_file将cron启动:

%crontabcron_file

再使用crontab-l指令来看crontab动作的内容:

%crontab-l<--listcrontab的内容

这时您的Linux将会在您指定的时刻为您自动执行您想作的Auto-ftp功能了。

经由上例的介绍,笔者希望能够让诸位读者了解到:利用Auto-ftp和cron定时器的应用来作自动化的档案传输功能;同时也希望经由此例浅显介绍,让读者们能够修改此一shellscript和crontab以将您的应用需求带入自动化的境界。

看完上面的Auto-ftp功能的介绍後,虽然利用Auto-ftp和cron能够带给我们自动传输的好处,但经验丰富的读者可能看到了有些问题存在:

1.必须先知道档案存在的详细目录和名称。

2.重覆传输、占用网路频宽、浪费资源。尤其是对国外传输时。

3.若要传输含有很多层次目录的档案时,该怎麽办?是否必须每一次目录都知道,将之先在localsite建好次目录架构,再一层层去传每一目录中的档案?

4.被ftp传回的档案是Local所建档的时间,无法忠实反应ftpsite的档案更新时间。

5.当有更新档案被传回时,你必须亲自去查阅,无法由Auto-ftp自动告知。(除非您再写个script来作)

亲爱的读者您若不幸刚好碰到这些问题的话,那麽下面所介绍的Mirror正是为您解决这些问题的拿手工具了。

什麽是Mirror

Mirror是个由Perl(PracticalExtractionandReportLanguage)所写的一个Package,它是利用ftp将不同主机间的档案及阶层目录作复制的功能。 它在ftp传档之前会比较档案名称的日期和size大小,以避免不必要的档案传输所造成网路不必要的traffic。同时亦可设定在传输时作压缩(compressorgzip)或切割(split)的动作。

它最主要是作为ftpArchive维护传输使用,但任何人都可用它来使ftp传输大量的档案。

Mirror程式可在NCTUCCCA.NCTU.edu.tw的/packages/tools/mirror取得。Mirror是由英国LeeMcLoughlin(lmjm@doc.ic.ac.uk)先生所写,在此感谢他提供我们这一好用的程式。我们就先到NCTUCCCA.NCTU.edu.tw抓取mirror.tar.gz。(编按:请见光碟片AUTHORFTPFTP2.txt)Mirror是一系列ftp相关程式的一部份,另二支分别是ftpmail和ftpcat,有机会的话,笔者将在以後的篇幅作介绍。以下则为Mirror的安装注意事项:

1.如果安装Mirror是作Archiveftp维护使用,通常须先建一Mirror要执行的目录,再修改mirror.defaults以符合你所在主机的设定,通常不开放给一般使用者使用。

2.如果要安装Mirror作为一般使用命令:安装Mirror到一般使用者能够存取的lib目录(通常是/usr/local/lib/mirror),并将mirror.pl作symbolic link到bin目录,这通常是/usr/local/bin)。

3.修改mirror.pl档案中的$extra_path和$big_tmp这二个环境变数,并且将mirror.pl作symboliclink到bin目录(通常是/usr/local/bin)。

4.修改mirror.pl档案中的$extra_path和$big_tmp二个环境变数$extra_path-mirror使用PATH和$extra_path作为相关程式的搜寻路径。$big_tmp则设定压缩档案时的暂存目录

Mirror的安装步骤与执行

Mirror内定会使用/usr/local/lib/mirror/mirror.default这一设定档。这一设定档主要设定远端主机(remotesite)名称或IPAddress、资料存放目录路径、登录名称、登录密码,本地(local)主机名称或IPAddress、资料存放目录路径、资料的拥有者权限设定、是否将资料压缩、使用何种压缩程式、以及作完Mirror後将mail通知谁等等设定。

以下的范例我将mirror.default修改,到NCTUCCCA.NCTU.edu.tw去抓取所有的SlackwareLinux的程式和资料,远端目录在/Operating-Systems/Linux/Slackware,并取名为slackware.def。(编按见光碟片AUTHORFTPFTP3.txt)

Mirror执行时内定会去使用/usr/local/lib/mirror/mirror.default这设定档。我以mirror执行刚刚定义的slackware.def抓取SlackwareLinux来作范例。

#mirror./slackware.def&

执行完mirror之後,NCTUCCCA.NCTU.edu.tw 的SlackwareLinux已经被mirror完完整整的依照我在slackware.def的设定「照」回我所在的主机上了。并会发出e-mail通知有那些档案被mirror回来。详细的mirror使用和说明,请参阅manmirror或groff-manmirror.man的说明。

Mirror的定时执行

将mirror和cron定时功能结合,即可作定时的mirror档案传输。

% cat ./mirror_cron

# Minutes Hour Day- Month Day- Command

# of- of-

# Month Week

# 0-59 0-23 1-31 1-12 0-6

#------------------------------------------------------------

10 2 * * 0 /usr/local/mirror/user1/roylin/slackware.def

# 定义每周日凌晨 2:10 执行 mirror"照回 "slackware

使用crontab指令启动mirror_cron将cron启动:

%crontabmirror_cron

这时再使用crontab-l指令来看crontab动作的内容:

%crontab-l<--listcrontab的内容

这时您的Linux将会在您指定的时刻为您自动执行mirror将Slackware Linux每周定时自动更新的功能了。同时能将所有档案的日期真实呈现,更可在档案传回时压缩,节省资料的储存空间,最重要的是:mirror不会浪费网路频宽去传输相同的档案,这对於和国外传输档案尤甚。

经由以上的介绍,笔者希望能够让诸位读者了解到:利用Auto-ftp、mirror和cron定时器的应用来作自动化的档案传输功能,同时也希望经由此例浅显的介绍,读者们能够修改此一shellscript、slackware.def和

crontab,以将您的应用需求带入自动化的境界。

希望读者们能由此文章获得受益和收获,也期盼诸位先进不吝来函指正。笔者十分乐於与各位读者作双向的沟通。小弟的E-MailAddress是:roylin@stratus.atm.ncu.edu.tw。我们下回再见。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航