+ -
当前位置:首页 → 问答吧 → 请教,FTP服务器下载文件问题

请教,FTP服务器下载文件问题

时间:2011-01-10

来源:互联网

想做一个每小时到一个ftp服务器的文件夹update上检查是否有新文件,如果有则download文件。
因为没写过关于ftp的,也没找到相关资料,能否哪位高手帮个忙。

作者: xlli000   发布时间: 2011-01-10

关键是如何定义这个“新”。否则:

use Net::FTP;

可以解决你的问题。

作者: 兰花仙子   发布时间: 2011-01-10

谢谢楼上,连接服务器应该没有问题,但是如何判断文件为新比较麻烦,目前困扰的是两个问题。

1, 如何判断文件的上传时间,目前想法有两个,一种是建立一个本地的List文件,用来记录已下载文件,但不知道该如何建立,查资料中,另一种方法就是判断文件的上传时间,也不知道如何做。

2, 就是如何用Perl实现下载命令, 也没用过,刚刚查到下面的例子,但因为查到的文件名可能是多个,不知道该如何转化过来,思考中。。。。
my $ftp_success=$ftp->;get("bbb.txt");
print ("$ftp_success.\n");




稍微解释下,我这里所说的新,就是没有下载过的文件,或者说是被其他人新上传的文件,因为本人属于菜鸟,所以希望高手能给点建议。。。。

作者: xlli000   发布时间: 2011-01-10

  1. #!/usr/bin/perl -w
  2. use strict ;
  3. use Net::FTP;

  4. use File::Copy;

  5. my $ftp_server="ftp.kyec.com";
  6. my $ftp_dir_ft="";
  7. my $ftp_dir_cp="";
  8. my $ftp_uid="usera";
  9. my $ftp_pw="usera";

  10. my $logfilename = 'download.log';
  11. my $log_cnt = 0;

  12. LOG("");
  13. LOG("Auto get FTP file Version 0.1");
  14. LOG("");
  15. LOG("usedfor: Perl Upload.pl");
  16. LOG("");

  17. ##=== try to login ftp server ==========================##
  18. ##  $total_files is the file counter to download from ftp server
  19. ##  $processed_files are download completed files counter
  20. my $total_files = 0;
  21. my $processed_files = 0;




  22. LOG("connet to KYEC ftp server: ($ftp_server)...");
  23. $ftp = Net::FTP->new($ftp_server);
  24. if($@)
  25. {
  26. $g_strLastError = "can not connect to KYEC ftp server,the root cause is:".$@;
  27. LOG("$g_strLastError@\n");
  28. $g_nUploadSuccess = -1;
  29. }
  30. else
  31. {
  32. $ftp->login($ftp_uid, $ftp_pw);
  33. if($@)
  34. {
  35.   $g_strLastError = "can not login to KYEC ftp server, the root cause is:".$@;
  36.   LOG("$g_strLastError\n");
  37.   $g_nUploadSuccess = -1;
  38. }
  39. else
  40. {

  41.   LOG("suecessful connect to KYEC ftp server and start to check files!");
复制代码
目前写的code,后面关键部分不知道该如何写了,有没有高手能帮下忙。

作者: xlli000   发布时间: 2011-01-10

你 ls看一下,然后截取时间那一列,不就知道时间了吗?
和你当前系统时间如果小时是一样的话,然后就get下来,不就可以了。

作者: changenew   发布时间: 2011-01-10



QUOTE:
你 ls看一下,然后截取时间那一列,不就知道时间了吗?
和你当前系统时间如果小时是一样的话,然后就get下 ...
changenew 发表于 2011-01-10 16:22




   

谢谢,“ls看一下,然后截取时间那一列” 这个怎么实现。。。。

作者: xlli000   发布时间: 2011-01-10

你看下NET::FTP模块,好像有个ls的方法,你调试一下,应该可以将当前目录下的文件list出来,应该包括时间的。

作者: changenew   发布时间: 2011-01-10

哦,谢谢各位,我再查查看。。。。

作者: xlli000   发布时间: 2011-01-10