Резервное копирование-архивирование каталогов с помощью Python 3

26.04.12

База данных - Архивирование (backup)

В целях предварительного знакомства со скриптовым языком python я написал небольшой скрипт копирования-архивирования каталогов из заданного списка.

В целях предварительного знакомства со скриптовым языком 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 для создания архивов

 

Так же это скрипт можно поставить как назначенное задание.

Комментарии по улучшению этого скрипта приветствуются. Кому поможет - буду рад.

 

 



См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42470    10    24    

38

BackUPv8 - система резервного копирования баз 1С

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    14671    12    6    

17

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    5703    n_mezentsev    15    

23

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    19480    sapervodichka    36    

140

Архивирование базы в dt и дамп postgres

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    4676    2    Gnom-Gluck    6    

6

Утилита копирования баз данных 1С

Архивирование (backup) Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4216    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cool.vlad4 2 26.04.12 15:10 Сейчас в теме
Комментарии по улучшению этого скрипта приветствуются.
скрипт прост как 5 копеек, единственно, что - 1. нужно всегда разделять логику и настройки, выделить настройки в какой-нибудь конфиг (txt, xml и т.д.) , тогда удобно будет менять параметры. 2. заменить платный winrar на бесплатное( 7-zip например) 3. логировать успехи и неудачи
ЗЫ. Это просто пожелания, мне собственно это не нужно.
2. Asis 02.05.12 17:57 Сейчас в теме
По-моему вместо WinRar лучше использовать встроенный модуль zipfile.
Пример:
import zipfile

....
    
    with zipfile.ZipFile(arc_filename, 'a', zipfile.ZIP_DEFLATED) as arc_file:
        arc_file.write(source, filename)

    # arc_filename - имя файла архива.
    # source - путь к исходному файлу.
    # filename - имя файла в архиве.

...

Показать
3. sttt 115 02.05.12 20:09 Сейчас в теме
(2) Asis, боюсь ZipFile будет хуже, потому как наверное ограничение в 4 гига будет а у рара нет
4. Asis 02.05.12 23:15 Сейчас в теме
(3) sttt, вы правы,
действительно есть такое ограничение для zip-файлов до версии спецификации 4.5.
Пожалуй соглашусь, что, несмотря на поддержку модулем zipfile расширения ZIP64 (до 16Гб), следует использовать внешние архиваторы для объемных информационных баз.
5. aximo 2027 03.05.12 05:27 Сейчас в теме
да я как-то не задумывался о выборе архиватора... просто ключи winrar мне давно известны, вот и применил их... а так все работает, нормально, без сбоев. что называется - запустил 1 раз и забыл...
6. quick 583 22.08.13 11:42 Сейчас в теме
есть на тему бэкапа хорошее фриварное решение http://www.cobiansoft.com но оно только под винду.
а скрипт можно под себя еще доделать, так что спасибо автору.
7. Rockman 24.09.13 11:57 Сейчас в теме
На тему бэкапа есть еще одно неплохое решение - VersionSafe
8. Vovan58 65 26.02.18 12:55 Сейчас в теме
конкатенация строк при создании пути - не катит.
os.path.join()
- рулит
9. avbolshakov 05.01.23 11:13 Сейчас в теме
10. Vovan58 65 05.01.23 11:36 Сейчас в теме
(9) спасибо, в тему. Сейчас скрипты бэкапов обновляю.
Оставьте свое сообщение