Эта статья рассказывает, как написать bat файл для резервного копирования файлов в двух режимах – полного резервного копирования и добавочного резервного копирования.

Этот командный файл можно использовать на рабочем компьютере для копирования документов, прописать свои каталоги для копирования.

Полное резервное копирование

Полное резервное копирование включает копирование всех файлов заданного каталога. Копия включает все файлы, но процесс копирования длительный, и копия занимает много места на диске. Из-за длительного времени выполнения приходится делать полное резервное копирование в нерабочее время, например, в конце рабочего дня.

Добавочное резервное копирование

Добавочное резервное копирование включает копирование только файлов, измененных после последнего резервного копирования. Изменен ли файл, определяется по архивному атрибуту, этот режим выполняется довольно быстро за счёт небольшого числа файлов, и его можно выполнять в течение рабочего дня.

Файл резервной копии

файлы резервных копий сохраняются в в виде ZIP файлов. Это удобно для просмотра, так как на любом компьютере есть программа ZIP Folder или архиватор, поддерживающий формат ZIP, и можно извлечь любой файл. Поэтому пользователь может сам восстанавливать нужный документ за нужную дату без участия администратора.

Zip файлы удобно выгружать на сервер – некоторые облачные хранилища имеют возможность распаковывать zip прямо на сервере.

Каждая резервная копия сохраняется в отдельном файле, в названии файла указывается дата снятия копии, это облегчает поиск нужной редакции восстанавливаемого файла

Для создания ZIP файлов потребуется программа-архиватор с интерфейсом командной строки, я использую 7-ZIP.

Исключения

В файле можно прописать исключения по расширению файлов и по подпапкам

Например, чтобы не копировать TMP и BAK файлы и файлы из подпапок Архив и Файлы Outlook.

Содержимое bat файла

Подготовка списка файлов

Эта часть bat файла подготавливает список файлов для последующей передачи в архиватор 7-zip, для которого требуется список в кодировке UTF-8 с указанием относительного пути к файлам.

Чтобы определить файлы, которые нужно включить в резервную копию, используется команда dir.

  • В режиме полного резервного копирования выбираются все файлы, кроме скрытых и системных.
  • В режиме добавочного резервного копирования выбираются подлежащие архивированию файлы,кроме скрытых и системных.
if /i "%backup_mode%" == "full" dir %files_folder% /A:-H-S /B /S > "%filelist%"
if /i "%backup_mode%" == "incremental" dir %files_folder% /A:A-H-S /B /S > "%filelist%"

Затем из полученного списка удаляются файлы по исключаемым расширениям и исключаемым подпапкам. Кроме того, список файлов преобразуется в кодировку UTF8, так как архиватор 7-zip работает со списком файлом в кодировке UTF-8. Также удаляется начальная часть пути %files_folder%.

echo -spt:"%files_folder%" -i -e > "%nhrt_list%"
if not "%exclude_ext%"=="" echo -sre:"^.*\.(%exclude_ext%)[\r\n]+" -i -e >> "%nhrt_list%"
if not "%exclude_subfolders%"=="" echo -sre:"^(%exclude_subfolders%).*[\r\n]+" -i -e >> "%nhrt_list%"
nhrt.exe -list:"%nhrt_list%" -o:d -cp:auto,utf8 "%filelist%"

Создание файла архива

Имя файла резервной копии включает тип копирования и текущую дату. Далее вызывается 7-zip с подготовленным списком файлов. Поскольку используются относительные пути, необходимо перейти в копируемый каталог.

set backup_file=%backup_folder%_%backup_mode%backup_%date:~-4%%date:~3,2%%date:~0,2%.zip
pushd "%files_folder%"
if /i "%backup_mode%" == "full" set backup_command=a
if /i "backup_mode" == "incremental" set backup_command=u
7z.exe %backup_command% "%backup_file%" @"%filelist%"

Снятие архивного атрибута

7-zip не снимает архивный атрибут о архивированных файлов, поэтому это делается с помощью команды attrib:

for /f "usebackq tokens=*" %%a in ( `type "%filelist%"` ) do attrib -A "%%a"

Скачивание и установка

bat файл

Полностью bat файл можно скачать по ссылке https://nhutils.ru/download/nhbackup.bat

Программа 7-zip для архивирования

7-Zip — свободный файловый архиватор, скачать актуальную версию можно скачать с официальной страницы https://www.7-zip.org/

Программы nhutils

Для этого bat файла потребуются программы nhcolor, nhmb, nhrt.

Содержит исполняемые файлы программ и bat файлы с примерами использования. Требуется установка вручную: скопируйте файлы в подходящую папку.

Настройка

В файле необходимо указать тип резервного копирования, прописать пути к файлам и к резервной копии.

rem Тип резервного копирования: full или incremental
set backup_mode=full
rem set backup_mode=incremental

rem Путь к копируемым файлам, заканчивается \
set files_folder=%USERPROFILE%\Documents\

rem Путь к файлу резервной копии и начало имени файла
set backup_folder=%USERPROFILE%\OneDrive\копии\документы

rem Не архивировать файлы с расширениями, разделитель ^|
set exclude_ext=tmp^|bak^

rem Не архивировать подпапки, разделитель ^|
set exclude_subfolders=Архив^|Файлы Outlook

Запуск

Для корректной работы bat файл необходимо запускать в командной строке Unicode (cmd /u).Файл использует кодировку UTF-8 (65001), и сам сохранён в кодировке UTF-8.

Командный файл можно сохранить в разных конфигурациях – для разных папок, для полного или добавочного копирования.

запускать как вручную, так и по расписанию.
Например, файл incbackup.cmd можно запускать и несколько раз в день, хоть каждый час, и он будет обновлять файл резервной копии текущего дня по мере того, как пользователь вносит изменения в свои документы, при этом время резервного копирования будет небольшим.
При этом пользователю будут доступны сделанные копии по дням, и он сможет сам, без участия администратора, восстанавливать не только определённый файл, но и различные его редакции (по датам).

Этот скрипт подходит для конфигурации, когда компьютер имеет высокоскоростное подключение к серверу, так как скрипт обрабатывает ZIP файл резервной копии, находящийся на файловом сервере.

Как проверить работу bat файла

Чтобы протестировать добавочное резервное копирование, я изменяю 2-3 файла и запускаю bat файл. Он выполняется быстро, и в получившемся ZIP файле должны находиться только эти 2-3 измененных файла, причем с сохранением структуры папок.

Вопросы и ответы

Скопируются ли файлы с именами на русском языке?

Да, bat файл работает с кодировкой Unicode UTF-8 и поэтому обрабатывает правильно и кириллицу, и специальные символы в названиях файлов и папок – при поиске файлов для резервного копирования, при сохранении в ZIP файл и при извлечении из архива.

Скопируются ли файлы с пробелами в имени?

Да, bat файл работает корректно с файлами и папками, имена которых содержат пробелы.

Что, если мне не нужно копировать файлы определенных типов?

В bat файле есть возможность не включать в резервную копию файлы по расширениям. В стандартном варианте пропускаются файлы BAK и TMP, можно добавить другие расширения в параметр exclude_ext. Например, я для рабочих файлов исключаю копирование файлов PST (почта Microsoft Outlook).

Узнать больше

Программы nhutils, используемые в bat файле

Наши соцсети

bat файл резервного копирования
Метки:     

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *