Проверка резервных копий

proverka rezervnyh kopij Законченные системные программы

Каким же образом этот сценарий способен унять паранойю при создании резервных копий на CD? Для дублирующей проверки работы моего пишущего привода CD я выполняю команду, как показано ниже. С помощью такой команды я могу также найти изменения, произведенные после предыдущего резервного копирования. И снова, поскольку на моем компьютере привод CD представляется как «G:», я указываю путь с таким корнем. В Linux используйте корень вида /dev/cdrom или /mnt/ cdrom:

C:\\PP4E\System\Filetools> python diffall.py Examples g:\PP3E\Examples > diff0226

C:\\PP4E\System\Filetools> more diff0226

…вывод опущен…

Компакт-диск крутится, сценарий сравнивает, и в конце отчета появляется информация о различиях. Пример полного отчета о различиях находится в файле diff*.txt в пакете с примерами для этой книги. А чтобы быть действительно уверенным, я выполняю следующую команду глобального сравнения — чтобы проверить все дерево с резервной копией книги на флешке (которая, с точки зрения файловой системы, ничем не отличается от CD):

C:\\PP4E\System\Filetools> diffall.py F:\writing-backups\feb-26-10\dev

C:\Users\mark\Stuff\Books\4E\PP4E\dev > diff3.txt

C:\\PP4E\System\Filetools> more diff3.txt

Comparing F:\writing-backups\feb-26-10\dev to C:\Users\mark\Stuff\Books\4E\PP4E\ dev

Directory lists are identical

Comparing contents

ch00.doc DIFFERS

ch01.doc matches

ch02.doc DIFFERS

ch03.doc matches

ch04.doc DIFFERS

ch05.doc matches

ch06.doc DIFFERS

…множество строк опущено…

——————

Comparing F:\writing-backups\feb-26-10\dev\Examples\PP4E\System\Filetools to C:\

Files unique to C:\Users\mark\Stuff\Books\4E\PP4E\dev\Examples\PP4E\System\ Filetools copytemp cpall.py diff2.txt diff3.txt diffall.py diffs.txt dirdiff.py dirdiff.pyc

Comparing contents

bigext-tree.py matches

bigpydir.py matches

…множество строк опущено…

Diffs found: 7

  files differ at F:\writing-backups\feb-26-10\dev\ch00.doc —

C:\Users\mark\Stuff\Books\4E\PP4E\dev\ch00.doc

  files differ at F:\writing-backups\feb-26-10\dev\ch02.doc — C:\Users\mark\Stuff\Books\4E\PP4E\dev\ch02.doc

  files differ at F:\writing-backups\feb-26-10\dev\ch04.doc — C:\Users\mark\Stuff\Books\4E\PP4E\dev\ch04.doc

  files differ at F:\writing-backups\feb-26-10\dev\ch06.doc — C:\Users\mark\Stuff\Books\4E\PP4E\dev\ch06.doc

  files differ at F:\writing-backups\feb-26-10\dev\TOC.txt — C:\Users\mark\Stuff\Books\4E\PP4E\dev\TOC.txt

  unique files at F:\writing-backups\feb-26-10\dev\Examples\PP4E\System\Filetools — C:\Users\mark\Stuff\Books\4E\PP4E\dev\Examples\PP4E\System\Filetools

  files differ at F:\writing-backups\feb-26-10\dev\Examples\PP4E\Tools\visitor.py — C:\Users\mark\Stuff\Books\4E\PP4E\dev\Examples\PP4E\Tools\visitor.py

Данный пример показывает, что после создания предыдущей резервной копии я добавил несколько примеров и изменил несколько файлов с текстом глав. Если выполнить эту команду сразу после создания резервной копии, то радаром diffall не будет обнаружено никаких изменений, за исключением файлов, которые вообще не могут быть скопированы. Такое глобальное сравнение может занять несколько минут. Эта операция выполняет побайтовое сравнение всех файлов глав и снимков с экрана, дерева примеров и других, но это точное и полное сравнение. Дерево каталогов этой книги содержит большое количество файлов, и какая-либо менее автоматизированная процедура проверки без помощи Python была бы совершенно немыслима.

После того как этот сценарий был написан, я начал использовать его для проверки резервных копий моих ноутбуков на внешнем жестком диске, создаваемых автоматически. Для этого я запускаю сценарий cpall, написанный нами в предыдущем разделе этой главы, а затем, чтобы проверить результаты и получить список файлов, вызвавших проблемы при копировании, — сценарий сравнения, разработанный здесь. Когда я выполнял эту процедуру в последний раз, было скопировано и проверено 225 000 файлов и 15 000 каталогов, занимающих 20 Гбайт дискового пространства, — это явно не та задача, которую можно выполнить вручную!

Ниже приводятся магические заклинания, которые я вводил на моем ноутбуке с системой Windows. Здесь f:\ — это раздел на внешнем жестком диске, и вас не должно удивлять, что каждая из этих команд выполняется около получаса или даже больше на распространенном аппаратном обеспечении. Копирование, инициированное операцией перетаскивания мышью, выполняется ничуть не быстрее (если вообще выполняется!):

C:\\System\Filetools> cpall.py c:\ f:\ > f:\copy-log.txt

C:\\System\Filetools> diffall.py f:\ c:\ > f:\diff-log.txt

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий