#!/usr/bin/perl $server = 'ftp.server'; $account = 'account'; $passwd = 'passwd'; $dir1 = `pwd`; chomp $dir1; use Net::FTP; $ftp = Net::FTP->new("$server", Timeout => 0, Debug => 1); $ftp->login("$account","$passwd"); use File::Find; %p = ("r" => 4, "w" => 2, "x" => 1, "-" => 0); find(\&wanted, "$dir1"); sub wanted { if (! $dir) {$ftp->mkdir("$dir1");} if ($dir ne $File::Find::dir) { $ftp->mkdir("$File::Find::dir"); $dir = $File::Find::dir; } unless (/^\.$/ || /^\.\.$/ || -d $File::Find::name) { if (/(\.html$|\.htm$|\.txt$|\.cgi$|\.pl|\.log$)/) {$ftp->ascii;} else {$ftp->binary;} $ftp->put("$File::Find::name", "$File::Find::name"); # パーミッションの取得・変更 @p = split (//, substr(`ls -l $File::Find::name`, 1, 9)); my $perm = $p{$p[0]} + $p{$p[1]} + $p{$p[2]} . $p{$p[3]} + $p{$p[4]} + $p{$p[5]} . $p{$p[6]} + $p{$p[7]} + $p{$p[8]}; $ftp->site("chmod", "$perm", "$File::Find::name"); } } $ftp->quit; exit;