Python Script для резервного копирования каталога - PullRequest
0 голосов
/ 13 марта 2010
#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 в разделе переменных среды. Любой, кто с предложением сделать резервную копию каталога, приветствуется

Ответы [ 3 ]

2 голосов
/ 13 марта 2010

Может быть, вместо написания собственного скрипта резервного копирования вы могли бы использовать инструмент python под названием rdiff-backup, который может создавать инкрементные резервные копии?

0 голосов
/ 13 марта 2010

, если алгоритм сжатия может быть чем-то другим, а просто для резервного копирования каталога, почему бы не сделать это с помощью собственных tar и gzip python? например,

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 голосов
/ 13 марта 2010

Каталог source содержит пробелы, но у вас нет кавычек в командной строке. Это может быть причиной сбоя резервного копирования.

Чтобы избежать подобных проблем, используйте модуль subprocess вместо os.system:

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