FTP Backup

Stato
Discussione chiusa ad ulteriori risposte.

girex

Utente Silver
11 Giugno 2007
39
3
1
66
Questo script fa un backup di un sito o di una sua directory e lo salva in formato zip.

Codice:
#!/usr/bin/perl
# backup ftp directory by girex

use File::Path;
use Net::FTP;
use Archive::Zip qw( :ERROR_CODES );    

my $host = shift or die "\nusage: perl $0 <host>\n";
	
my $zip = new Archive::Zip;	
my $client = new Net::FTP( $host ) or die "\nCannot connect to $host: $!\n";

print "\nConnessione stabilita..\n\nuser: ";
chomp(my $user = <>);

print "pass: ";
chomp(my $pass = <>);

$client->login( $user, $pass ) or die "\nCannot login. ", $client->message;

print "\n", join ( "\n", $client->ls() ), "\n\n";
print "Directory di cui fare il back-up: ";

chomp(my $root_dir = <>); print "\n";

$client->cwd( $root_dir ) or die "Impossibile spostarsi in $root_dir. $!\n"; 

mkdir( "backup" );
chdir( "backup" );

get_dir( $root_dir );

chdir ( ".." );
$zip->addTree ( "./backup", "./backup" ) == AZ_OK or die $!;
$zip->writeToFileNamed( "backup.zip" ) == AZ_OK or die $!; 

$client->quit();
rmtree( "backup" ) or die $!;


print "\n\nBackup completato con successo, vedi backup.zip!\n";


sub get_dir()
{
	my $dir = shift;
	
	foreach $f( $client->ls() )
	{
		next if $f =~ /^\.{1,2}$/;	
		
		my $c = $client->pwd ();
		$c =~ s/\/$//;	
		
		print "Downloading: " . $c . "/$f\t\t\t\r"; $| = 1;
		
		if($client->cwd ( $f ))
		{
			mkdir ( $f );
			chdir ( $f );	
			
			get_dir( $client->pwd() );		
			
			chdir ( ".." );
			$client->cdup ();
		}
		else
		{
			$client->get( $f, $f );
		}					
	}
}
 
io lo sto creando il java,
ma è diverso:
non comprime in zip,
interfaccia utene tramite int. utente tradizionale
crea un log,
 
__GiReX__ ha detto:
e si, questi script li faccio principalmente per comodità mia, e poi li condivido :D

E' una delle scuse migliori per programmare qualcosa, te la fai per utlità e poi già che ci sei la posti xD
 
Stato
Discussione chiusa ad ulteriori risposte.