Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Back-up con script perl

    Ciao a tutti,

    avevo bisogno di uno script che, eseguito tramite cron, facesse il back-up di una directory ogni x ore.

    Ne ho trovato uno che fa proprio al caso mio, soltanto che quando crea il file compresso, gli attribuisce un nome tipo backup2-29-2004.tar.gz.

    Quindi, se lancio lo script piu' volte al giorno, il nuovo sovrascrivera' quello vecchio, finche' non e' passata la mezzanotte.

    Vorrei semplicemente fare in modo che, al nome, aggiunga oltre a mese, giorno e anno, aggiunga anche ore e minuti.

    Di seguito il codice. E' fattibile?

    codice:
    #!/usr/bin/perl 
    use CGI::Carp qw(fatalsToBrowser);
    
    ###############################################
    ##
    ## World Wide Backup Copywright 2001 WORLD WIDE CREATIONS www.worldwidecreations.com
    ##
    ## You are free to use this software any way you wish provided you follow the following terms:
    ## That you cannot use the source in any script/software you redistribute or sell in any way.
    ## You can NOT redistribute this software in any way.
    ##
    ## For complete licensing terms, please contact us at our website at www.worldwidecreations.com
    ##
    ## This software was created on October 4th 2001.
    ##
    ## This software is intended to create a backup file called backup.tar.gz on your server
    ## then the software will FTP this software anywhere you wish, providing you have 
    ## access to the said FTP server.  You can also choose NOT to FTP the backup file
    ## if all you wish is to use this to create a backup file.
    ##
    ## You can choose to timestamp the backups.
    ## 
    ## This software was tested on a Linux platform with a GNU version of Tar
    ## You may need to modify the code slightly if your system will not use gzip.
    ## 
    ## You can crontab this script, but you should make sure you do not set the cronjob
    ## too frequently as this could use up your bandwidth quickly if you set a cronjob to
    ## execute too often.  You should test this script first without a cronjob and make sure everything is working
    ## correctly, before you set this up as a working backup.
    ##
    ## A weekly crontab would look something like:
    ##
    ## 0 0 * * 1 perl /path/to/backup.pl
    ##
    ## This would execute the script every Monday.
    ##
    ## Dont forget to define your Path to Perl and to CHMOD this 755.
    ##
    ## This script is not designed to run as a CGI WEB script.
    ## you can attempt it if you wish, but with a large backup your browser will likely
    ## time out.  Use telnet or crontab instead.
    ##
    ## Support can be found in our forum at www.worldwidecreations.com
    ##
    ###############################################
    
    #Path to the directory you want to be as your base directory to back up.
    #All files AND directories off of this path will be archived. NO TRAILING SLASH
    $basepath = "/absolute/path/to/directory";
    
    ##Where you want the backup.tar.gz file to be placed (not where it will be FTP'd). NO TRAILING SLASH!
    $tarpath = "/absolute/path/to/storage/directory";
    
    ##If you want to timestamp the filename, select this as 1, otherwise 0;
    $date_yes = 1;
    
    ##If you DONT want the script to FTP this somewhere then check this 1, otherwise leave as 0
    $just_back_up = 0;
    
    #If you want the backup file deleted on the SOURCE server after FTP quits, check this as 1;
    $delete_source = 1;
    
    ##FTP server
    $ftpserver = "yourftpserver.com";
    
    ##FTP username
    $ftpusername = "yourftpusername";
    
    ##FTP password
    $ftppass = "ftppassword";
    
    ##CWD directory, in other words, when the script logs into the FTP server, where would you like the backup.tar.gz file to be placed
    $cwdd = "cgi-bin";
    
    ##want to be notified of transfer status by email (sendmail required)?
    $notify = 1;
    
    #path to sendmail
    $sendmail = "/usr/lib/sendmail";
    
    ##email address:
    $to = 'youremail@address.com';
    
    ##Who will the email address be from
    $from = 'from@address.com';
    
    
    ##############################NO MORE EDITING REQUIRED ####################################
    use Net::FTP;
    $hitch = ();
    ($day, $month, $year) = (localtime)[3,4,5];
    $year = $year + 1900; $month++;
    if ($date_yes) { $hitch = "$month-$day-$year"; }
    print "ARCHIVING FILES\n";
    @the = `tar --exclude backup$hitch.tar.gz -czf $tarpath/backup$hitch.tar.gz $basepath`;
    @mat = stat("$tarpath/backup$hitch.tar.gz");
    if ($mat[7] <= 0) { print "Backup didnt happen.  The error returned by the system (if any) is @the\n"; &send("Backup FAILED. Tar did not backup any files.  Error message returned from server (if any) is @the", "Backup FAILED"); exit; }
    print "Files Archived to backup$hitch.tar.gz\nFile Size Is $mat[7] Bytes\n";
    if ($just_back_up) {
    &send("Backup success.  Backup size $mat[7] bytes", "Backup Success");
    print "Ok, files are backed up, No FTP requested. Shutting down\n";
    exit;
    }
    print "Connecting into server\n";
    if ($ftp = Net::FTP->new("$ftpserver", Debug => 0)) { print "Logging in to server\n"; } else { print "could not find server! Exiting\n"; &send("Backup FAILED.  Could NOT connect to $ftpserver", "Backup FAILED"); exit; } 
    if ($ftp->login("$ftpusername","$ftppass")) { print "Username and Password ACCEPTED\n"; } else { print "could not log into server with Username and Password. Exiting!\n"; &send("Backup FAILED.  Could NOT connect to $ftpserver with the Username And Password provided - Authentication error.", "Backup FAILED"); exit; } 
    if ($ftp->cwd("$cwdd")) { print "Changed to the directory without any trouble - UPLOADING\n"; } else { print "Could not change to the appropriate directory, uploading anyway\n"; } 
    if ($ftp->binary) { print "Changed to Binary Mode No Problem\n"; } else { print "Could not change to binmode $!\n"; exit; } 
    if ($ftp->put("$tarpath/backup$hitch.tar.gz")) { print "Everything appears ok with the upload\n"; } else { print "Can not upload file $!\n EXITING\n"; &send("Backup FAILED.  Could NOT upload to $ftpserver. Error message returned from server is: $1", "Backup FAILED"); exit; } 
    $ftp->quit; 
    if ($delete_source) {
    print "You chose to delete the source after FTP, deleting $tarpath/backup$hitch.tar.gz...";
    unlink("$tarpath/backup$hitch.tar.gz") or print "COULD NOT DELETE! $!";
    print "\nDeleted!\n";
    }
    print "File Transferred OK!\nFinished\n";
    if ($notify) {
    &send("Backup success.  Transferred $mat[7] bytes to $ftpserver", "Backup Success");
    }
    
    sub send {
    if ($notify) {
    open MAIL, "|$sendmail -t" or print "Could not open Sendmail $!\n";
                    print MAIL "To: $to\nFrom: $from\nSubject: $_[1]\n\n$_[0]\n\n.\n";
                    close MAIL;
    }
    }
    Anomalia grafica: una perdita di tempo

  2. #2
    Ciao,

    dariottolo... dariottolo da te non mi aspetto domande così banali


    modifica così:

    $hitch = ();
    ($sec, $min, $ore, $day, $month, $year) = (localtime)[0,1,2,3,4,5];
    $year = $year + 1900; $month++;
    if ($date_yes) { $hitch = "$month-$day-$year_$ore_$min_$sec"; }

    Ciao.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    Ciao Shishii,

    credo tu mi abbia sopravvalutato

    Ho provato ad apportare le tue modifiche, ma non funzionava come avrebbe dovuto: il file veniva salvato come backup2-29-34.tar.gz e backup2-29-32.tar.gz

    E' bastato sostituire $hitch = "$month-$day-$year_$ore_$min_$sec"; con $hitch = "$month-$day-$year-$ore-$min-$sec"; :sexpulp:

    Non ho la piu' pallida idea del perche' non digerisca i "_", ma adesso funziona alla perfezione.

    Grazie mille.

    Dario
    Anomalia grafica: una perdita di tempo

  4. #4
    Ciao,

    errore mio. Il carattere "_" è ammesso nei nomi delle variabili per cui leggeva la stringa cercando un'unica variabile $year_$ore_$min_$sec. eheheheheh l'attimo del c*g*i*n*
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  5. #5
    Grazie ancora per l'aiuto e la spiegazione.

    Dario
    Anomalia grafica: una perdita di tempo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.