如何在python中tar

Ste*_*yer 4 python command-line backup tar

我想使用 python 脚本备份我的网站。这是脚本:

#!/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])
Run Code Online (Sandbox Code Playgroud)

TAR_CMD 的输出是

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

这是正确的 - 调用 tar 加上这个输出 tars 我的网站 - 好的。

运行 python 脚本时,输出为:

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

tar:懦弱地拒绝创建一个空的存档

尝试使用 'tar --help' 或 'tar --usage' 获取更多信息。

我究竟做错了什么?

hee*_*ayl 5

您需要将命令组件作为列表的元素传递,因此您可以添加tarTAR_CMD变量中,然后用于split(' ')创建以空格分隔的命令组件列表:

TAR_CMD='tar .....'
subprocess.call(TAR_CMD.split(' '))
Run Code Online (Sandbox Code Playgroud)

或者直接:

subprocess.call('tar ....'.split(' '))
Run Code Online (Sandbox Code Playgroud)