+ Responder ao Tópico



  1. #1

    Padrão Backup Python

    alguém pode me ajudar eu consegui 3 scripts de como fazer backup no python mais

    mais não to conseguindo entender nada quem puder organizar e e deichar tudo em ordem os comandos agradeço

    #! / Usr / bin / python


    import time
    import sys
    import os


    ##
    # Configuration variables
    ##


    # Local
    script_dir = '/root/script/backup' # Dir script is located in


    # Remote
    remote_host = 'xx.xxx.xx.xxx' # IP Address of remote host
    remote_dir = '/root/backup/tp1' # Remote backup directory
    remote_user = 'root' # Remote username


    # What to do
    backup_home = True # Backup /home directory
    backup_etc = True # Bbackup /etc directory
    send_alert = True # Send email alert of backup when it finished
    do_scp = True # Scp backup


    # Other
    max_home_dir_size = 2000000 # Max home directory size, in bytes
    alert_email = '[email protected]' # Email address for alert
    path_to_sendmail = '/usr/sbin/sendmail'


    ##
    # Functions
    ##


    # Backup function tars directory, scps to the remote host
    def backup(dir, file, remote_host, remote_dir, remote_user, script_dir):


    log.write("Backup up %s to %s\n" % (dir,file))
    os.chdir(dir)
    cmd = "tar -czf %s/%s --exclude-from=%s/backup_exclude.txt ."
    % (script_dir, file, script_dir)
    os.system(cmd)


    os.chdir(script_dir)


    log.write("Uploading %s\n" % (file))


    if do_scp:
    cmd = "scp -Bq %s %s@%s:%s/%s" % (
    file, remote_user, remote_host, remote_dir, file)
    #print cmd
    os.system(cmd)




    ##
    # Script
    ##


    # Start log file


    log_path = "%s/scp_backup.log" % (script_dir);
    log = open(log_path,'w')
    log.write(
    "Starting script at %s\n" % time.strftime("%m/%d/%Y %H:%M:%S")
    )
    t1 = time.time()


    # Backup all home directories
    if backup_home:


    cmd = 'du --max-depth=1 -k /home --exclude-from=backup_exclude.txt'
    put, get = os.popen4(cmd) # Get a listing of directories and sizes


    entries = get.readlines()
    entries.pop()
    for line in entries: # Loop over each line from the du command


    line = line.rstrip()
    size, dir = line.split("\t") # Divide into size and directory name


    se flutuador ( tamanho ) < max_home_dir_size :
    tmp = dir . divisão ( "/" ) nome # Dividir ao longo diretório '/'
    arquivo # Name com base no nome do diretório, com o fim tar.gz
    file = " % s . tar.gz " % ( tmp . pop ())
    de backup ( dir , arquivo , remote_host , remote_dir ,
    REMOTE_USER , script_dir ) # Faça backup de


    # Backup / etc
    se backup_etc :
    cópia de segurança ( '/ etc' , 'etc_backup.tar.gz' , remote_host , remote_dir ,
    REMOTE_USER , script_dir )


    # Fim do arquivo de log
    t2 = tempo . tempo ()
    log . escrever ( "Acabar com script em % s \ n " % do tempo . strftime ( "% m / % d /% Y% H:% s:% M " ))
    log . write ( "O tempo para executar script: % s segundos \ n " % ( t2 - t1 ))
    log . fechar ()


    # Enviar alerta
    se send_alert :


    MAIL = path_to_sendmail


    msg = "Para: % s \ r \ n De: % s \ r \ n Assunto: SCP backup do log de ??\ r \ n \ r \ n "
    % ( alert_email )
    f = aberto ( log_path , 'r' ) # Receba conteúdo de arquivo de log
    msg + = f . ler ()
    f . fechar ()


    p = OS . popen ( " % s -t " % MAIL , 'w' ) # Enviar e-mail
    p . escrever ( msg )
    exitcode = p . fechar ()
    # if exitcode:
    # print "Código de saída:% s"% exitcode

    foi esse que achei ainda to começando com isso e não estou entendendo nada

    se precisar ainda tenho mais 2 scripts que também não entendo se quiserem dar uma olha me avisem

  2. #2

    Padrão Re: Backup Python

    Olá Gabriel,

    para executar o script, você deve primeiro configurar as seguintes variáveis no fonte:

    script_dir = '/root/script/backup' # Dir script is located in
    remote_host = 'xx.xxx.xx.xxx' # IP Address of remote host
    remote_dir = '/root/backup/tp1' # Remote backup directory
    remote_user = 'root' # Remote username

    backup_home = True # Backup /home directory
    backup_etc = True # Bbackup /etc directory
    send_alert = True # Send email alert of backup when it finished
    do_scp = True # Scp backup

    max_home_dir_size = 2000000 # Max home directory size, in bytes
    alert_email = '[email protected]' # Email address for alert
    path_to_sendmail = '/usr/sbin/sendmail'

    Depois da configuração, basta executá-lo, digitando python <nome do arquivo>