免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3666 | 回复: 4
打印 上一主题 下一主题

[求助]使用Net::FTP通过FTP上传文件到服务器后文件损坏 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-19 14:14 |只看该作者 |倒序浏览
我用perl写了一个自动备份的脚本,通过Net::FTP上传文件到ftp服务器来备份文件。脚本执行正常,并且文件也上传到ftp服务器上。本来以为一切ok,但是在服务器端解压缩上传过来的文件时,发现文件已经损坏。对比本地文件和服务器端文件时发现本地文件517k,服务器端的文件有536K。直接用ftp指令上传文件,不会有这样的问题。

    我想是不是ftp服务器的问题,后来改用windows+ serv-U 问题依旧。更改type为ascll 、 binary、byte 还是不行,还试过主动、被动模式,也不能解决问题。

我想是不是程序的问题,我在下面贴出了我的程序代码,请大虾指教:

系统环境:
1. redhat as 3.0
2. perl 5.8.0
3. ftp server: vsftp / serv-U


  1. #! /usr/bin/perl -w

  2. ##################
  3. # Import modules #
  4. ##################

  5. use Net::FTP;


  6. ########################
  7. # Variable declaration #
  8. ########################

  9. my $TAR = "/bin/tar";
  10. my $RM = "/bin/rm";


  11. my ($y, $m, $d)  = (localtime(time))[5,4,3];
  12. my $date         = sprintf "%d%02d%02d",
  13.                      1900+$y, $m+1, $d;

  14. my @DIRS         = qw(/etc/passwd /etc/shadow /var/log/boot.log
  15.                       /var/log/lastlog /var/log/messages
  16.                       /var/log/secure /var/log/secure
  17.                       /var/log/xferlog
  18.                    );

  19. my $BACKUP_DIR   = "/tmp/";
  20. my $BACKUP_FILENAME  = "daily_".$date.".tar.gz";

  21. my $ftp_hostname = "192.168.x.xx";
  22. my $ftp_username = "******";
  23. my $ftp_password = "******";
  24. my $ftp_dir = "/backup";


  25. #######################
  26. # backup files by tar #
  27. #######################

  28. system($TAR, "zcvf", $BACKUP_DIR.$BACKUP_FILENAME,
  29.        @DIRS) and die "$TAR failed ($!)";



  30. #############################
  31. # Upload backup file by ftp #
  32. #############################


  33. $ftp = Net::FTP->;new($ftp_hostname, Passive =>; 1);
  34. $ftp->;login($ftp_username,$ftp_password);
  35. $ftp->;cwd($ftp_dir);
  36. $ftp->;put($BACKUP_DIR.$BACKUP_FILENAME);
  37. $ftp->;quit();


  38. ######################
  39. # Delete backup file #
  40. ######################

  41. #system($RM, "-f", $BACKUP_DIR.$BACKUP_FILENAME)
  42. #        and die "$RM failed ($!)";
复制代码

论坛徽章:
0
2 [报告]
发表于 2004-03-22 13:42 |只看该作者

[求助]使用Net::FTP通过FTP上传文件到服务器后文件损坏

高手大仁帮忙调一下,小弟急用阿!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-03-22 13:46 |只看该作者

[求助]使用Net::FTP通过FTP上传文件到服务器后文件损坏

沒用過Net::Ftp但是你應該用binary 的方式來ftp資料..
default是ascii  很容易會造成很多問題...

论坛徽章:
0
4 [报告]
发表于 2004-03-24 09:58 |只看该作者

[求助]使用Net::FTP通过FTP上传文件到服务器后文件损坏

程序中如何体现用bin方式的,好像没有见到

论坛徽章:
0
5 [报告]
发表于 2004-03-24 12:26 |只看该作者

[求助]使用Net::FTP通过FTP上传文件到服务器后文件损坏

$ftp->;cwd($ftp_dir);

$ftp->;binary; ##### set binary mode

$ftp->;put($BACKUP_DIR.$BACKUP_FILENAME);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP