Пакетный скрипт Windows для резервного копирования данных

Пользователи компьютеров, которые выросли на продвинутых компьютерах Mac и Windows, могут не знать об этом, но однажды, давным-давно, все персональные компьютеры контролировались с использованием интерфейса командной строки. Да, этот неуклюжий командный блок на вашем компьютере с Windows был буквально единственным способом, которым большинство людей когда-либо взаимодействовали с компьютером. Интерфейсы командной строки в значительной степени опирались на небольшие программы, называемые «скриптами», которые представляли собой набор команд операционной системы, используемых для выполнения общих задач.

Хотя графические пользовательские интерфейсы современных ПК более сложны и просты в использовании, чем старые командные строки, все еще используются более старые методы управления вашим компьютером. Одним из наиболее распространенных и хорошо подходящих приложений для сценария командной строки является резервное копирование данных. Сценарии командной строки могут быть автоматизированы для запуска в любое время без какого-либо вмешательства человека и имеют несколько ограничений. Лучше всего — они являются встроенной частью операционной системы Windows.

Почему сценарии командной строки?

Зачем использовать сценарий командной строки, когда есть как коммерческие, так и бесплатные программы резервного копирования? Ну, сценарии командной строки имеют ряд уникальных преимуществ. Вот несколько из них:

  • Собственные команды: Какой лучший способ сделать резервную копию данных, чем использовать функции, доступные через программу, которая создает данные? Является ли это самой операционной системой с помощью простой команды копирования файла или команды базы данных для создания восстанавливаемого двоичного файла, исходная программа лучше знает, как выполнить резервное копирование.
  • Максимальный контроль. Поскольку сценарий командной строки следует простой пошаговой процедуре, вы точно знаете, что происходит, и можете легко изменить поведение.
  • Быстро: поскольку все является нативной командой, ничто не подлежит интерпретации. Опять же, вы используете команды, предоставляемые самой программой, поэтому накладные расходы сведены к минимуму.
  • Мощный: мне еще предстоит увидеть задачу резервного копирования, которая не может быть выполнена с помощью сценария командной строки … и я сделал несколько прикольных вещей. Хотя вам, возможно, придется провести некоторые исследования, проб и ошибок, если у вас действительно уникальные потребности, обычно встроенных функций и возможностей используемого языка сценариев более чем достаточно.
  • Бесплатный и гибкий. Очевидно, что сценарий командной строки ничего не стоит (вне времени его разработки), поэтому вы можете копировать свои сценарии на любое количество машин и систем практически без затрат времени и средств. Сравните это со стоимостью покупки лицензий на программное обеспечение для резервного копирования на нескольких серверах и / или настольных компьютерах.

Краткий обзор резервного скрипта

Большинство людей никогда не учились использовать сценарии командной строки, и это считается чем-то вроде «черного искусства». Тем не менее, это довольно простая вещь для изучения. Чтобы продемонстрировать мощь командной строки, я предоставляю простой пакетный скрипт Windows, который вы можете использовать для резервного копирования важных данных. Этот настраиваемый и настраиваемый сценарий не требует каких-либо знаний (или желания изучать) языка пакетных сценариев Windows, но если вы решите, что хотите больше узнать о пакетных сценариях Windows, вы обнаружите, что этот сценарий является хорошей отправной точкой ,

Что делает скрипт резервного копирования:

  1. Создает полные или ежедневные инкрементные (см. Определение ниже) резервные копии файлов и папок, указанных в отдельном текстовом файле конфигурации (см. Ниже).
    • Когда папка названа, эта папка и все подпапки копируются.
    • Когда файл назван, создается резервная копия только этого файла.
  2. Сжимает (архивирует) резервные копии файлов. После копирования всех файлов для резервного копирования они сжимаются для экономии места. 7-Zip должен быть установлен в вашей системе, чтобы это работало.
  3. Датирует сжатый файл и перемещает его в место хранения. После того, как файлы резервной копии сжаты, результирующему архиву присваивается имя файла в соответствии с текущей датой, а затем он перемещается в настроенное хранилище, такое как внешний диск или сетевое местоположение.
  4. Убирает за собой. После выполнения всех задач пакетный скрипт очищает все созданные им временные файлы.

Требования:
Windows 2000 / XP / 2003 / Vista или новее
7-Zip (это бесплатно)

Конфигурационный файл:
Файл конфигурации представляет собой просто текстовый файл, который содержит файлы и папки для резервного копирования, вводится один элемент резервной копии в строке. Этот файл должен называться «BackupConfig.txt» и находиться в той же папке, что и скрипт резервного копирования. Вот пример файла BackupConfig.txt (обратите внимание, символ «#» в первой строке указывает, что строка является комментарием; комментарии всегда игнорируются при запуске сценария):

# Введите имена файлов и папок, по одному в строке.
C: \ Documents and Settings \ Джейсон Фолкнер \ Рабочий стол C: \ Documents and Settings \ Джейсон Фолкнер \ Мои документы \ Важные файлы C: \ Scripts \ BackupScript.bat

В приведенном выше примере выполняется резервное копирование рабочего стола пользователя Windows Джейсона Фолкнера (и всех папок на рабочем столе), папки «Важные файлы» внутри Моих документов (и всех папок внутри «Важных файлов») и файла «BackupScript.bat» внутри каталог C: \ Scripts.

Типы резервных копий:

  • Полная резервная копия: полная копия всех файлов и папок (включая подпапки) включена в резервную копию.
  • Инкрементное резервное копирование: если предоставляется папка, только файлы, созданные или измененные на текущую дату
    резервное копирование Когда файл предоставляется, он всегда резервируется независимо от того, когда он был изменен.

Пакетный скрипт Windows для резервного копирования данных

Я хочу подчеркнуть, что этот скрипт очень простой, поскольку все, что он делает, — это создает резервные копии, используя простую копию файла. Есть несколько параметров конфигурации, которые вы можете установить:

  • Место хранения резервных копий, в котором хранятся полученные сжатые файлы резервных копий.
  • День недели, когда выполняется полное резервное копирование (любой другой день запускает инкрементное резервное копирование).
  • Место, где 7-Zip установлен на вашем компьютере. Скрипт автоматически настроен на поиск по умолчанию.

Если у вас есть предложения или пожелания, пожалуйста, оставьте комментарий ниже. Я действительно хотел бы сделать дополнительную статью к этому посту, которая показывает обновленный сценарий, основанный на входе читателя. Если вам нужны инструкции о том, как «использовать» этот сценарий или настроить запланированное задание, посмотрите ссылки под источником сценария.


Без лишних слов, вот оно:

Заметка: Поскольку кавычки не отображаются правильно ниже (и, как следствие, могут испортить скрипт), я включил текстовую ссылку под скриптом, которую вы можете использовать, чтобы получить точный источник для копирования.

@ECHO OFF
REM BackupScript
REM Версия 1.01, Обновлено: 2008-05-21
REM Джейсон Фолкнер (статьи [-at-] 132solutions.com)
REM Выполняет полное или инкрементное резервное копирование папок и файлов, настроенных пользователем.
REM Использование ---
REM> BackupScript
SETLOCAL ENABLEEXTENSIONS ENABLEDELEDED Расширение
REM --- Параметры конфигурации ---
REM Папка, в которой вы хотите сохранить полученный архив резервных копий.
REM Эта папка должна существовать. Не ставьте '\' в конце, это будет добавлено автоматически.
REM Вы можете ввести локальный путь, букву внешнего диска (например, F :) или расположение в сети (например, \\ сервер \ резервные копии)
SET BackupStorage = C: \ Backup
REM В какой день недели вы хотите выполнить полное резервное копирование?
REM Введите одно из следующих значений: вс, пн, вт, ср, чт, пт, сб, *
REM В любой день недели, кроме указанного ниже, будет выполняться инкрементное резервное копирование.
REM Если вы введете «*», полное резервное копирование будет выполняться каждый раз.
SET FullBackupDay = *
REM Место, где на вашем компьютере установлена ​​программа 7-Zip.
REM По умолчанию это папка «7-Zip» в вашей папке Program Files.
SET InstallLocationOf7Zip =% ProgramFiles% \ 7-Zip
REM + ------------------------------------------------ ----------------------- +
REM | Ничего не меняйте здесь, если вы не знаете, что делаете. |
REM + ------------------------------------------------ ----------------------- +
REM Переменные использования.
SET exe7Zip =% InstallLocationOf7Zip% \ 7z.exe
SET dirTempBackup =% TEMP% \ backup
SET filBackupConfig = BackupConfig.txt
Проверка REM.
ЕСЛИ НЕ СУЩЕСТВУЕТ% filBackupConfig% (
ECHO Файл конфигурации не найден, отсутствует:% filBackupConfig%
GOTO End
)
ЕСЛИ НЕ СУЩЕСТВУЕТ "% exe7Zip%" (
ECHO 7-Zip не установлен в местоположении:% dir7Zip%
ЭХО Пожалуйста, обновите каталог, где установлен 7-Zip.
GOTO End
)
REM Резервные переменные.
FOR / f "токены = 1,2,3,4 delims = /" %% a IN ('date / t') DO (
SET DayOfWeek = %% a
SET NowDate = %% d - %% b - %% c
SET FileDate = %% b - %% c - %% d
)
IF {% FullBackupDay%} == {*} SET FullBackupDay =% DayOfWeek%
IF / i {% FullBackupDay%} == {% DayOfWeek%} (
SET txtBackup = Full
SET swXCopy = / e
) ELSE (
SET txtBackup = инкрементный
SET swXCopy = / s / d:% FileDate%
)
ЭХО Начиная копировать файлы.
ЕСЛИ НЕ СУЩЕСТВУЕТ "% dirTempBackup%" MKDIR "% dirTempBackup%"
FOR / f "skip = 1 tokens = *" %% A IN (% filBackupConfig%) DO (
SET Current = %% ~ A
ЕСЛИ НЕ СУЩЕСТВУЕТ "! Текущий!" (
ЭХО ОШИБКА! Не найдено:! Текущий!
) ELSE (
ЭХО Копирование:! Текущий!
SET Destination =% dirTempBackup% \! Current: ~ 0,1! %% ~ pnxA
REM Определите, является ли запись файлом или каталогом.
IF "%% ~ xA" == "" (
REM Справочник.
XCOPY "! Текущий!" "!Место назначения!" / v / c / i / g / h / q / r / y% swXCopy%
) ELSE (
Файл REM.
COPY / v / y "! Текущий!" "!Место назначения!"
)
)
)
ЭХО Закончено копирование файлов.
ECHO.
SET BackupFileDestination =% BackupStorage% \ Backup_% FileDate% _% txtBackup% .zip
REM Если файл резервной копии существует, удалите его в пользу нового файла.
ЕСЛИ СУЩЕСТВУЕТ "% BackupFileDestination%" DEL / f / q "% BackupFileDestination%"
ECHO Сжатие резервных копий файлов. (Новое окно)
REM Сжатие файлов с использованием 7-Zip в процессе с более низким приоритетом.
НАЧАТЬ «Сжатие резервной копии. НЕ ЗАКРЫТЬ» / ниже нормального / ждать "% exe7Zip%" a -tzip -r -mx5 "% BackupFileDestination%" "% dirTempBackup% \"
ECHO Закончено сжатие резервных копий файлов.
ECHO.
ЭХО Уборка.
ЕСЛИ СУЩЕСТВУЕТ "% dirTempBackup%" RMDIR / s / q "% dirTempBackup%"
ECHO.
:Конец
ЭХО Закончено.
ECHO.
ENDLOCAL

Простой текстовый источник доступен здесь: резервная копия

Если вам нужна помощь для начала работы с этим сценарием, вот пара ссылок, которые помогут вам:

  • Как создать пакетный файл
  • Как создать запланированное задание Windows

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

Наслаждайтесь!

Ссылка на основную публикацию
Adblock
detector