Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Script Backup em Python


Alphak

Pergunta

Olá,

Estou Montando um script em Python, para gerar dump do Postgresql, Segue o Script:

Site fonte script: PostgreSQL Backup script (python)

from time import gmtime, strftime
import subprocess
import os
import glob
import time

# change these as appropriate for your platform/environment :
USER = "postgres"
PASS = "xxxxxxx"
HOST = "localhost"

BACKUP_DIR = "d:\\Pg_Backup\py\\"
dumper = """ "c:\\Program Files\\PostgreSQL\\9.2\\bin\\pg_dump" -U %s -Z 9 -f %s -F c %s  """                  

def log(string):
    print time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime()) + ": " + str(string)

# Change the value in brackets to keep more/fewer files. time.time() returns seconds since 1970...
# currently set to 2 days ago from when this script starts to run.

x_days_ago = time.time() - (60 * 60 * 24 * 2)

os.putenv('PGPASSWORD', PASS)

database_list = subprocess.Popen('echo "select datname from pg_database" | psql -t -U %s -h %s template1' % USER , shell=True, stdout=subprocess.PIPE).stdout.readlines()

# Delete old backup files first.
for database_name in database_list :
    database_name = database_name.strip()
    if database_name == '':
        continue

    glob_list = glob.glob(BACKUP_DIR + database_name + '*' + '.pgdump')
    for file in glob_list:
        file_info = os.stat(file)
        if file_info.st_ctime < x_days_ago:
            log("Deslincando: %s" % file)
            os.unlink(file)
        else:
            log("Mantendo : %s" % file)

log("Arquivos anteriores a: %s foram removidos." % time.strftime('%c', time.gmtime(x_days_ago)))

# Now perform the backup.
for database_name in database_list :
    log("Dump iniciado para %s" % database_name)
    thetime = str(strftime("%Y-%m-%d-%H-%M"))
    file_name = database_name + '_' + thetime + ".sql.pgdump"
    # Run the pg_dump command to the right directory
    command = dumper % (USER, BACKUP_DIR + file_name, database_name)
    log(command)
    subprocess.call(command, shell=True)
    log("Dump terminado para %s" % database_name)

log("Tarefa de Backup completa.")
Mas ao executá-lo ocorre o seguinte erro:
Traceback (most recent call last):
  File "teste.py", line 25, in <module>
    database_list = subprocess.Popen('echo "select datname from pg_database" | psql -t -U %s -h %s template1' % USER , shell=True, stdout=subprocess.PIPE).stdout.readlines()
TypeError: not enough arguments for format string

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...