web-dev-qa-db-fra.com

comment tarer dans python

Je souhaite sauvegarder mon site Web à l'aide d'un script python. Voici le 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])

La sortie de TAR_CMD est

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

ce qui est correct - appeler tar plus cette sortie gâche mon site Web - ok.

Lors de l'exécution du script python, le résultat est le suivant:

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

tar: Cowardly refuse de créer une archive vide

Essayez 'tar --help' ou 'tar --usage' pour plus d'informations.

Qu'est-ce que je fais mal?

4
Stefan Meyer

Vous devez passer les composants de commande en tant qu'éléments d'une liste pour pouvoir ajouter tar à la variable TAR_CMD, puis utiliser split(' ') pour créer une liste de composants de commande séparés par des espaces:

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

Ou directement:

subprocess.call('tar ....'.split(' '))
5
heemayl