В целях предварительного знакомства со скриптовым языком python я написал небольшой скрипт копирования-архивирования каталогов из заданного списка. Представляю вам этот скрипт:
import glob
import os
import datetime
import shutil
#Настройки:
#Путь к основному каталогу откуда надо копировать
pathtodata=»w:/Base_1c»
#Название каталогов, которые надо копировать с их содержимым:
organiz = [«Folder_01»,
«Folder_02»,
«Folder_03»,
«Folder_04»,
«Folder_05»,
«Folder_06»
]
# делаем каталог для копий по текущему времени
# по умолчанию должен быть создан каталог e:/_backups/
dt = datetime.datetime.now()
currentdate = dt.strftime(‘%Y_%m_%d-%H%M’)
os.mkdir(‘e:/_backups/’+currentdate)
for org in organiz:
print(org+» копирование…»)
# скопируем все каталоги в созданный
# копирование дерева — откуда — куда
shutil.copytree(»+pathtodata+’/’+org+», ‘e:/_backups/’+currentdate+’/’+org+’/’)
# заархивируем все что скопировано
names = glob.glob(‘e:/_backups/’+currentdate+’/*’)
for name in names:
if os.path.isdir(name):
# заархивировать все name используем winrar 4.01
print (name+» архивирование каталога…»)
# ключ -df удаляет скопированные каталоги после архивирования
os.system(r’c:/»Program Files»/»winrar»/rar.exe a -r -ep1 -df ‘+name+’ ‘+name+’ ‘)
# все сделал
print(«все сделано»)
КАК РАБОТАТЬ СО СКРИПТОМ:
1. Для начала нужно скачать и установить python 3.2. можно скачать здесь http://python.org/download/
2. Скопируйте скрипт из статьи и сохраните его в текстовый файл с расширением *.py (например, backup.py)
3. Создайте на диске e: каталог _backups и поместите туда этот файл backup.py
4. Настройте список копируемых каталогов в скрипте и сохраните его:
4.1. В моем примере скрипта мои копируемые каталоги лежат в общем каталоге на диске w:Base_1c
4.2. В скрипте отредактируете список organiz. В этом списке через запятую укажите те каталоги, которые лежат в общем каталоге и которые нужно скопировать. У меня это Folder_01, Folder_02… Folder_06.
5. Скрипт готов к работе — можно его запустить, если все сделано правильно, то:
Результат работы скрипта: в существуещем каталоге e:/_backups/ появляется каталог с текущей датой и временем — например: 2012_04_25-2000, в котором размещены архивы каталогов Folder_01.rar, Folder_02.rar, Folder_03.rar … Folder_06.rar
В системе должен быть установлен winRar для создания архивов
Так же это скрипт можно поставить как назначенное задание.
Комментарии по улучшению этого скрипта приветствуются. Кому поможет — буду рад.
скрипт прост как 5 копеек, единственно, что — 1. нужно всегда разделять логику и настройки, выделить настройки в какой-нибудь конфиг (txt, xml и т.д.) , тогда удобно будет менять параметры. 2. заменить платный winrar на бесплатное( 7-zip например) 3. логировать успехи и неудачи
ЗЫ. Это просто пожелания, мне собственно это не нужно.
По-моему вместо WinRar лучше использовать встроенный модуль zipfile.
Пример:
Показать
(2) Asis, боюсь ZipFile будет хуже, потому как наверное ограничение в 4 гига будет а у рара нет
(3) sttt, вы правы,
действительно есть такое ограничение для zip-файлов до версии спецификации 4.5.
Пожалуй соглашусь, что, несмотря на поддержку модулем zipfile расширения ZIP64 (до 16Гб), следует использовать внешние архиваторы для объемных информационных баз.
да я как-то не задумывался о выборе архиватора… просто ключи winrar мне давно известны, вот и применил их… а так все работает, нормально, без сбоев. что называется — запустил 1 раз и забыл…
есть на тему бэкапа хорошее фриварное решениеhttp://www.cobiansoft.com но оно только под винду.
а скрипт можно под себя еще доделать, так что спасибо автору.
На тему бэкапа есть еще одно неплохое решение — VersionSafe
конкатенация строк при создании пути — не катит.
— рулит