como tar em python

4

Eu quero fazer backup do meu site usando um script python. Este é o script:

#!/usr/bin/python
import os
import time
import datetime
from subprocess import call

DATETIME = time.strftime('%Y%d%m-%H%M%S')
BACKUP_PATH = '/Backups/backups/Test/'
WEB_PATH = '/var/www/html'

TAR_CMD = "-zcf " + BACKUP_PATH + DATETIME + "-html.tar.gz " + WEB_PATH
print TAR_CMD
call (["tar",TAR_CMD])

A saída de TAR_CMD é

  

-zcf /Backups/backups/Test/20152111-123016-html.tar.gz / var / www / html

que está correto - chamar tar mais esta saída tars meu site - ok.

Ao executar o script python, a saída é:

  

-zcf /Backups/backups/Test/20152111-123150-html.tar.gz / var / www / html

     

tar: Recusando-se covardemente a criar um arquivo vazio

     

Tente 'tar --help' ou 'tar --usage' para mais informações.

O que estou fazendo de errado?

    
por Stefan Meyer 21.11.2015 / 12:33

1 resposta

5

Você precisa passar os componentes de comando como elementos de uma lista, para poder adicionar tar à variável TAR_CMD e usar split(' ') para criar uma lista de componentes de comando separados em espaços:

TAR_CMD='tar .....'
subprocess.call(TAR_CMD.split(' '))

Ou diretamente:

subprocess.call('tar ....'.split(' '))
    
por heemayl 21.11.2015 / 13:34