Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python Backup directory / 3 сообщений из 3, страница 1 из 1
11.09.2013, 09:37
    #38393173
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python Backup directory
Всем доброго дня.
есть скрипт следующего содержания:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
import os, datetime, zipfile, glob, logging

#Текущее дата/время
curr_date = datetime.datetime.today()
#Текущая дата(используется для формирования имени архива)
now_date = datetime.date.today()
#Список того что будет архивироваться
FilesToBackup = []
#Что необдохимо архивировать
toBackup = os.path.join(os.path.curdir,'toBackup.ls')
#Куда необходимо архивировать
backupTo = "c:\\Backup"
#Формируем имя архива
BackupName = now_date.strftime("%A %d.%m.%Y") + '.zip'
#Формируем имя Лог файла
BackupLog = now_date.strftime("%A %d.%m.%Y") + '.log'
#Сколько дней хранить архивы
StoreBackupCopy = 7

logging.basicConfig(format = u'[%(asctime)s] %(levelname)-8s  %(message)s',
#                    level = logging.DEBUG,
                    filename = os.path.join(backupTo,BackupLog))

#Получаем корневые директории для архивирования
def GetSrcList(file):
    SrcLs = []
    with open(file) as f:
        SrcLs = f.read().splitlines()
    return SrcLs

#Функция заполняет список для архивирования
def GetListForBackup(PathForBackup):
    for file in os.listdir(PathForBackup):
        path = os.path.join(PathForBackup, file)
        if not os.path.isdir(path):
            FilesToBackup.append(path)
        else:
            GetListForBackup(path)

#Функция удаляет архивы старше определенной даты
def DelOldBackup():
   backupLs = glob.glob(os.path.join(backupTo,"*.*"))
   for ls in backupLs:
       fLastChange = datetime.datetime.fromtimestamp(os.path.getmtime(ls))
       PassDay = curr_date-fLastChange
       if PassDay.days > StoreBackupCopy:
            try:
                logging.warning(u'Удаляем файлы старше: '+str(StoreBackupCopy)+' дней')
                os.remove(ls)
                logging.warning(u'Файл '+ls+' был удален')
            except:
                logging.error(u'Ошибка удаления файла '+ls)

def backup(list_backup):
    logging.warning( u'Выполняется архивация файлов...' )
    with zipfile.ZipFile(os.path.join(backupTo,BackupName),'w',compression=zipfile.ZIP_DEFLATED) as Backup:
        for l in list_backup:
            try:
                Backup.write(l)
                logging.info(u'Добавляем файл '+l+' в архив '+Backup.filename)
            except:
                logging.error(u'Ошибка добавления файла: '+l+'в архив '+Backup.filename)

        Backup.close
        logging.warning( u'Архивация завершена' )

logging.warning( u'Заполняем список для архивирования абсолютными путями файлов' )

for c in GetSrcList(toBackup):
    GetListForBackup(c)

backup(FilesToBackup)
DelOldBackup()


все работает в плане архивирования, но охота прикрутить проверку полученного архива на валидность что бы в случае инвалида сообщать пользователю об этом.может кто реализовал подобное или подскажет как это сделать?
...
Рейтинг: 0 / 0
11.09.2013, 21:22
    #38394124
python123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python Backup directory
Там и так есть обработка ошибки на добавление в архив.
Как вы собрались валидировать zip архив?
...
Рейтинг: 0 / 0
12.09.2013, 06:18
    #38394228
bald56rus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python Backup directory
python123Там и так есть обработка ошибки на добавление в архив.
Как вы собрались валидировать zip архив?

Вы имеете ввиду этот кусок кода???
Код: python
1.
2.
3.
4.
5.
try:
        Backup.write(l)
        logging.info(u'Добавляем файл '+l+' в архив '+Backup.filename)
except:
        logging.error(u'Ошибка добавления файла: '+l+'в архив '+Backup.filename)


ну да я сделал отлов ошибок модулем try...except, этого будет достаточно?под валидировать я предполагал что то наподобие "Протестировать файл(ы) в архиве" у WinRar либо подобные функции у других архиваторов. а как отловить ситуацию возникновения такой ошибки в результате выполнения, что бы например оповестить пользователя об этом например письмом на мыло.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python Backup directory / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]