- 论坛徽章:
- 0
|
我用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
- #! /usr/bin/perl -w
- ##################
- # Import modules #
- ##################
- use Net::FTP;
- ########################
- # Variable declaration #
- ########################
- my $TAR = "/bin/tar";
- my $RM = "/bin/rm";
- my ($y, $m, $d) = (localtime(time))[5,4,3];
- my $date = sprintf "%d%02d%02d",
- 1900+$y, $m+1, $d;
- my @DIRS = qw(/etc/passwd /etc/shadow /var/log/boot.log
- /var/log/lastlog /var/log/messages
- /var/log/secure /var/log/secure
- /var/log/xferlog
- );
- my $BACKUP_DIR = "/tmp/";
- my $BACKUP_FILENAME = "daily_".$date.".tar.gz";
- my $ftp_hostname = "192.168.x.xx";
- my $ftp_username = "******";
- my $ftp_password = "******";
- my $ftp_dir = "/backup";
- #######################
- # backup files by tar #
- #######################
- system($TAR, "zcvf", $BACKUP_DIR.$BACKUP_FILENAME,
- @DIRS) and die "$TAR failed ($!)";
- #############################
- # Upload backup file by ftp #
- #############################
- $ftp = Net::FTP->;new($ftp_hostname, Passive =>; 1);
- $ftp->;login($ftp_username,$ftp_password);
- $ftp->;cwd($ftp_dir);
- $ftp->;put($BACKUP_DIR.$BACKUP_FILENAME);
- $ftp->;quit();
- ######################
- # Delete backup file #
- ######################
- #system($RM, "-f", $BACKUP_DIR.$BACKUP_FILENAME)
- # and die "$RM failed ($!)";
复制代码 |
|