2010-03-13 124 views
0
#Filename:backup_ver1 

import os 
import time 

#1 Using list to specify the files and directory to be backed up 
source = r'C:\Documents and Settings\rgolwalkar\Desktop\Desktop\Dr Py\Final_Py' 

#2 define backup directory 
destination = r'C:\Documents and Settings\rgolwalkar\Desktop\Desktop\PyDevResourse' 

#3 Setting the backup name 
targetBackup = destination + time.strftime('%Y%m%d%H%M%S') + '.rar' 

rar_command = "rar.exe a -ag '%s' %s" % (targetBackup, ''.join(source)) 
##i am sure i am doing something wrong here - rar command please let me know 

if os.system(rar_command) == 0: 
    print 'Successful backup to', targetBackup 
else: 
    print 'Backup FAILED' 

O/P:- Backup FAILED 

WinRAR是下添加到環境變量PATH和CLASSPATH以及 - 任何人與備份目錄的建議是非常值得歡迎Python腳本備份目錄

+0

好的,我這樣做(導入tarfile模塊),它運行安靜 - 我沒有給任何消息,因爲沒有任何東西添加產生一條消息 - 我檢查了位置destination = os.path.join(root,「文檔和設置「,」rgolwalkar「,」桌面「,」桌面「,」PyDevResourse「)但沒有找到備份。第二,如果我添加: - 如果os.system(tar)== 0:打印'成功備份到',targetBackup其他:打印'備份失敗' - 如果os.system(tar)== 1出現錯誤:TypeError:system()參數1必須是字符串,而不是TarFile – rgolwalkar

+0

只是好奇,爲什麼你使用rar而不是跨平臺的東西,比如zip,它被內置到python中? –

回答

0

source目錄包含空格,但你在命令行中沒有引號。這可能是備份失敗的原因。

爲了避免這樣的問題,使用subprocess模塊,而不是os.system

subprocess.call(['rar.exe', 'a', '-ag', targetBackup, source]) 
2

也許不是寫你自己的備份腳本可以使用名爲rdiff進行備份蟒蛇的工具,它可以創造增量備份?

0

如果壓縮算法可以是別的東西,它只是用來備份一個目錄,爲什麼不用python自己的tar和gzip呢?例如

import os 
import tarfile 
import time 
root="c:\\" 
source=os.path.join(root,"Documents and Settings","rgolwalkar","Desktop","Desktop","Dr Py","Final_Py") 
destination=os.path.join(root,"Documents and Settings","rgolwalkar","Desktop","Desktop","PyDevResourse") 
targetBackup = destination + time.strftime('%Y%m%d%H%M%S') + 'tar.gz'  
tar = tarfile.open(targetBackup, "w:gz") 
tar.add(source) 
tar.close() 

那樣,你不依賴於系統上的rar.exe

+0

非常感謝ghostdog74--讓我檢查代碼並執行它 - 我將檢查並粘貼O/P – rgolwalkar

+0

ghostdog74 - 我得到錯誤: - 回溯(最近一次調用最後一次): 文件「C:\ Documents and Settings \ rgolwalkar \ Desktop \ Desktop \ Dr Py \ Final_Py \ backup_ver1.py」,第16行,在 tar = tarfile.open(targetBackup,「w:gz」) NameError:name'tarfile '沒有定義 – rgolwalkar

+0

tarfile是一個模塊,導入它像'import tarfile' – ghostdog74