Бэкап при помощи Python

Автор: Admin

Дата:2014-01-28

Примеры вариантов простых бакапов в Python

Бэкап данных можно выполнять и в Python используя как собственные средства языка программирования так и внешние программы.

1) Вариант: Бэкап Python + WinRaR

import os
import time


# Файлы и каталоги, которые необходимо скопировать, собираются в список.
source=['"D:\\bases-1c\\База1с\\1Cv8.1CD"', 'C:\\Code']
print('Я должен сделать',len(source),'Бэкапа(ов)')

dstdir='E:\\backup'
print(dstdir,'-папка для бэкапа')


dst = dstdir + os.sep + time.strftime('Year-%Y.%m.%d_') + time.strftime('hour-%H.%M.%S') + '.rar'
print('Там будет создан файл-', dst)

"""os.sep – разделитель пути для конкретной операционной системы,
'/' в GNU/Linux '\\' в Windows и ':' в Mac OS.
Использование os.sep делает программу переносимой для ОС"""


rar = "C:\PROGRA~1\WinRAR\WinRAR.exe u -as -dh {0} {1}".format(dst, ' '.join(source))
''' format - подставляет аргументы {0}=dst, {1}=source
Метод join преобразовывает список в строку '''

if os.system(rar)==0:
    print('Резервная копия успешно создана в', dst)
else:
    print('Создание резервной копии НЕ УДАЛОСЬ')

#!/usr/bin/env python
# -*- coding: utf-8-*-
import os
import tarfile
import time
import sys

2) Вариант: Бэкап Python + Tarfile

date = time.strftime('Date-%Y.%m.%d_')
time =  time.strftime('Hour-%H.%M.%S_')

#Переходим в каталог
os.chdir('C:\\My Documents')
#Получаем текущую деректорию
directory = os.getcwd()
#Получаем список
contents = os.listdir()

tar = tarfile.open('E:\\backup\\'+ date + '.tar.gz', "w:gz")

bases1c = "D:\\bases-1c\\База1С\\1Cv8.1CD"

# 1) Добавляем в архив всю папку C:\\My Documents
for i in contents:
    tar.add(i)

tar.add('C:\\one\\')
# 2) Добавляем еще в архив
tar.add(bases1c, arcname=time+'Bases.1CD')

names = tar.getnames()
print (names, '- "Здесь мы получаем содержимое архива"')
print (names[0], ' - "А Здесь его первый элемент"')

members = tar.getmembers()
print (members[0].name, '- "То же самое но при помощи getmembers"')
print (members[0].isdir(), '- "И проверить на истинность"')
tar.close()

# в результате получаем весь список из C:\\My Documents, а так же по файлу указанных в
# C:\\one\\o1.doc и D:\\bases-1c\\База1С\\1Cv8.1CD
# arcname применен для определения имени в архиве

3) Вариант: системные команды Python

Так же не забываем, что команды системы Windows, Linux могут быть выполнены в Python, что дает возможность использовать встроенные команды самой системы.

Пример выполнения xcopy(системной команды) из Python

dir = os.system(r'xcopy D:\bases-1c\buh-1c\1Cv8.1CD D:\backup\ /D /E /H /Y /O')

Количество просмотров: 2585

Комментарии к статье:

Добавить комментарий

Введите сумму с картинки

© Plutonit.ru - Администрирование, настройка Linux и Windows 2009 - 2017