Chinaunix

标题: perl写了个ftp传输脚本,老是中断,请大虾指导。 [打印本页]

作者: xuqing1980119    时间: 2016-11-02 10:36
标题: perl写了个ftp传输脚本,老是中断,请大虾指导。
#!/usr/bin/perl                       
#use strict;      
use Net::FTP;
use File::Find;


my $uploadpath = "/data01"; #上传的路径
my $datapath = "/xddr/timeing/bak/201610/20161001"; #要上传的文件的本地路径


my $host="134.1.169.120";

# get file list to be upload
find( \&filter, $datapath);

my $ftp=Net::FTP->new($host,Passive => 1) or die "cannot connect to ftp server $!";
$ftp->login("test","test");
$ftp->binary and print "set type to binary\n";
$ftp->cwd($uploadpath);

foreach $file (@filelist) {
        my $result = $ftp->put($file);
}

$ftp->quit();

@filelist=();

sub filter{
        push @filelist, $File::Find::name if -f ;
}


这是我最新改的,之前只是将put的文件print到一个文件,更改的地方也都是print的语句;
就是传到一半,没反应了,最后一次是传到一半突然很慢了,而且传过去的文件都是0字节;
目录大概有15w个文件,刚刚有中断了,传了6w多个文件,停住了。
不知道哪里有问题。


作者: 104359176    时间: 2016-11-02 11:33
为什么不用客户端来传,自己写脚本,无法并行优化,无法错误跟踪,无法断点续传。。。
作者: xuqing1980119    时间: 2016-11-02 12:02
回复 2# 104359176

你是指cuteftp这类工具???
作者: 104359176    时间: 2016-11-02 12:38
是啊,还有很多开源的,Linux, Windows 上都有
作者: laputa73    时间: 2016-11-03 08:32
net::ftp也是可以支持断点续传的。
不过这类一次性工具的场合,确实没必要自己造轮子。
用rsync就很好。
ps 一个目录下15w文件,ls都可能卡死,不分子目录吗?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2