我在将文件从一台服务器复制到另一台服务器时遇到了很多麻烦。Perl - 使用Net:FTP和Possible Net :: FTP将文件(和内容)复制到远程服务器::文件
我一直在尝试两天。
请知道我使用严格,下面的脚本仅用于测试。
我实际上得到一个文件“名称”到“远程”服务器和chmod到0755,但它是空的。
1-文件需要复制/ ftp'd到“远程”服务器特定的目录。 mkdir if!。
2-要复制的“本地”文件存在于脚本目录以外的目录中。
3-文件复制到“远程”服务器后,执行命令chmod到0755
4-容易看似每个人,但我。 :-(
下面写到文件中名存实亡,它是空的
#!/usr/bin/perl -w
use CGI;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
print CGI::header();
use Net::FTP;
use Net::FTP::File;
#use strict;
my $host='ftp.myserver.com';
my $ftp=Net::FTP->new($host,Timeout=>240,Passsive=>1) or $newerr=1;
push @ERRORS, "Can't ftp to $host: $!\n" if $newerr;
myerr() if $newerr;
print qq~Connected<br />~;
$ftp->login('[email protected]','mypasswd') or die "Cannot login: [email protected]";
$datedir ='04-01-2011';
#################################
$copyfrom = $datedir;
$thisfile = 'index.pl';
$fullpath = $copyfrom.'/'.$thisfile;
$path = '/home/account/public_html/folder/'.$copyfrom;
if (-e $fullpath) {print qq~Copy source exists<br >~;}
unless (-e $fullpath) {print qq~Copy source does not exist<br >~;}
#######################################################
my $isdir = $ftp->isdir($datedir);
if (!$isdir){
print qq~Remote directory does not exist<br >~;
$ftp->mkdir($datedir) or die $ftp->message;
}
if ($isdir){
print qq~Remote directory exists<br />~;
}
#############
my $new = $datedir.'/'.$thisfile;
my $isfile = $ftp->exists($new);
if (!$isfile){
print qq~Remote file does not exist<br />~;
$ftp->cwd($copyfrom);
print "I'm in the directory ", $ftp->pwd(), "\n";
my $chkdir = $ftp->isdir($copyfrom);
if ($chkdir){print qq~directory exists<br />~;}
if (!$chkdir){print qq~directory does not exists<br />~;}
$ftp->ascii() || die $ftp->message;
$ftp->put($copyfrom, $thisfile) or die $ftp->message;
$ftp->chmod(755, $thisfile) or warn $ftp->message;
}
if ($isfile){
print qq~Remote file exists<br >~;
}
$ftp->quit;
sub myerr {
print "Error: \n";
print @ERRORS;
exit 0;
}
现在,我也只是尝试的Net :: FTP ::文件及复印件();但是,错误的浏览器 - - 我已阅读和阅读测试,测试,直到软件错误“当前工作目录‘/’,”
,我在这里找到自己
除了模块的选择(我读其他地方),我在做什么。错了?
服务器与cPanel共享服务器,所以我非常受限制,因此我尝试了这些ftp模块。
我很乐意解决我的脚本问题或者在我的服务器上运行的一种完全不同的方法。
感谢这么多的任何援助..
是的,问题是一团糟。我不应该把问题的目录和文件测试作为开始。那些对我来说只是白痴检查。我通常使用elsif和其他要求。该代码实际上只是一个挫败尝试的集合。至于ascii,会采取这样做,因为它必须是一个ascii xfer? – Stephayne 2011-03-31 21:29:48
二进制模式始终传输原始字节,因此传输的文件与原始文件相同。 Ascii模式是古老的东西,不要使用它。 – 2011-03-31 21:40:56
谢谢你的信息! – Stephayne 2011-03-31 22:08:49