Скрипт копирования файлов bat

  • 7 апреля

Набросал ещё один маленький BAT скрипт для резервного копирование папки. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Ссылки

Функции

  • С помощью xcopy делает резервные копии папки.
  • Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
  • С помощью 7-Zip архивирует резервные копии.
  • Удаляет старые резервные копии.
  • DirName – название папки
  • SourceDir – что бэкапим
  • BackupDir – куда бэкапим
  • NumFolders – сколько подпапок с бэкапами хранить
  • a7z – путь к 7z.exe

Пример настройки расписания

В Task Scheduler настраиваем новое задание.

Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not – запускать даже если юзер не залогинен.

В триггерах настраиваем расписание. У меня резервное копирование происходит раз в сутки.

Указываем ссылку на наш BAT файл.

Проверяем настройки. OK.

Теперь папка будет резервироваться раз в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 10 дней.

Если хотите хранить ежедневные и ежемесячные резервные копии – сделайте два BAT файла и два расписания резервного копирования в разные папки.

Наиболее доступный инструмент для резервного копирования — командная строка. Найти более-менее приличную реализацию резервного копирования в Windows-системах средствами CMD/BAT-файлов можно, воспользовавшись любым поисковиком. Однако часто нет необходимости накапливать и хранить все созданные архивы, достаточно лишь нескольких самых последних. В этом случае необходима реализация резервного копирования с поддержкой глубины архивации. Найти реализацию поддержки глубины архивации в таких скриптах уже гораздо сложнее.

Вашему вниманию — относительно простой скрипт (CMD-сценарий), реализующий резервное копирование с заданной глубиной архивации.

Скрипт предназначен для создания резервных копий путем упаковки в архив содержимого произвольного каталога. Помимо собственно поддержки глубины архивации в скрипте раеализовано сохранение новых резервных копий в каталоги, имена которых формируются на основе даты/времени резервирования. При выполнении архивации RAR будет пытаться открывать также совместно используемые файлы (бывает полезно, чтобы не заставлять пользователей обязательно выйти из программы; например, при резервировании файловых баз 1С). Удобнее всего использовать такой подход к резервированию данных, если прописать запуск скрипта в планировщик.

Читайте также:  Почему через медиа гет медленно качает

Поскольку используется консольная версия архиватора RAR, необходимо, чтобы для скрипта был доступен RAR.exe. Для новых локализованных версий архиватора помимо файла RAR.exe также желательно наличие файла RarLng.dll, а для зарегистрированных пользователей — еще и файла rarreg.key. Для обеспечения доступности можно, например, просто положить все нужные файлы в рабочий каталог скрипта.

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

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

В примере содержится только один блок непосредственного создания резервной копии (расположен после соответствующего комментария). Можно добавить несколько таких блоков один за другим, например, скопипастив имеющийся блок и изменив значения переменных SrcData и ArcName.

Резервные копии раскладываются в каталоги, имена которых содержат дату и время выполнения резервирования в следующем порядке: год, месяц, дата, часы, минуты, секунды, сотые доли секунды (справедливо для русских региональных настроек). Это необходимо для того, чтобы алфавитная сортировка списка резервных копий совпадала с сортировкой по дате/времени создания копий (то есть просто для удобства работы с копиями). В случае использования региональных настроек, в которых порядок следования элементов даты другой, для получения аналогичного эффекта необходимо изменить порядок токенов %%a-%%g в команде

Проверка существования каталога с резервной копией перед его созданием нужна, если вдруг захочется из имени каталога убрать «лишнее» (например, сотые доли секунд) и запускать скрипт чаще, чем позволяет такое имя. В этом случае ошибки при выполнении не будет, но RAR честно перезапишет уже имеющиеся в каталоге архивы.

Читайте также:  Сколько людей играют в варфейс в мире

«Родная» кодировка для CMD-сценариев — OEM (866), а для Windows-версии архиватора RAR — ANSI (Windows-1251). В связи с этим лог-файл грешит некоторой неудобочитаемостью, если сценарий сохранить в родной для него OEM-кодировке. С одной строны, для себя я счел этот недостаток некритичным (в редакторе/просмотрщике Far Manager не трудно нажать F8 для смены кодировки), а с другой стороны ничто не мешает сохранить сценарий в кодировке ANSI (вывод в консоль командами ECHO в сценарии не используется — только в лог-файл, — поэтому пользователь никаких кракозяблов не увидит, зато лог будет нормально записываться в одной и той же кодировке). Буду благодарен, если предложите более корректный способ «подружить» эти кодировки.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Все мы не раз слышали о необходимости выполнения резервного копирования данных. Крах системы, чьи-то шаловливые ручки, или они же, только свои, да еще множество причин, по которым ваши данные могут испортиться или уничтожиться. Тем, кому приходилось неделями восстанавливать утраченные данные, это объяснять уже не приходится.

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

Автоматическое резервное сохранение должно удовлетворять определенным требованиям:

  • должно выполняться регулярно. Причем период копирования определяется частотой обновления данных. Т.е. если файлы изменяются каждый день, то и копировать их нужно каждый день;
  • копии должно храниться отдельно от источника данных. Это может быть внешний диск, а еще лучше хранить копии на удаленном сервере или в облаке в интернете. Тогда даже если комната с компьютером и внешним диском взлетит на воздух, данные преспокойно останутся храниться в облаке на мощных и защищенных серверах крупных ИТ-компаний;
  • если хранилище имеет небольшой размер, копии должны сжиматься для экономии места;
  • по той же причине нужно вести контроль количества последних хранящихся копий. Например, для очень важных данных у меня хранятся 7 ежедневных, 4 еженедельных и 12 ежемесячных копий. Остальные копии удаляются за ненадобностью;
  • после выполнения сохранения нужно проверить наличие резервной копии и ее целостность.
Читайте также:  Программа для скачивания аудио с ютуба

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

Бесплатная программа – File Backup Watcher. Очень простая и удобная утилита для резервного копирования.

Платная программа – Acronis True Image Home. Одна из самых мощных и гибких систем. Бэкапит все: от файлов до операционной системы.

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

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

Создадим файл Backup.bat со следующим содержимым:

, где indir – каталог, который мы будем сохранять, destdir – каталог, где будут размещаться созданные архивы, arcpath – путь до архиватора Rar.exe. После запуска этого файла, архив входного каталога C:InFolder будет находиться в каталоге D:OutFolder. В нашем случае резервное копирование файлов подразумевает наличие архиватора Rar.exe в каталоге С:Program FilesWinRar.

Итоги

Мы написали самый простой скрипт по резервному копированию файлов. Конечно, при желании можно накрутить на него много полезного функционала, например:

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

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

Leave a Reply

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>