Резервное копирование: использование bat-файла

В статье:

  • Опишу и приведу примеры создания бэкапов используя командную строку.
  • “Подробно” распишу команду xCOPY и как применить WinRar в создании бэкапа.
  • Создание папкиархива с именем: текущая дата.

Процитирую баш.орг.ру:

Год за годом все новые админы бэкапят серверные винты на логических разделах тех же самых винтов.

Резервное копирование с использованием xCOPY

Пример скрипта, копирующего файлы в каталог f:backupnew, при втором запуске переименовывает каталог new в old, создает заново каталог new и копирует файлы. Т.е. батника дает возможность хранить “двухдневные” бэкапы:

del “f:backupold” /s /q

rmdir “f:backupold” /s /q

rename “f:backupnew” “old”

mkdir “f:backupnew”

xcopy “D:123*.*” “f:backupnew*.*” /E /F /H /R /K /Y /D

Можно поступить иначе,  например команда md %date:~0,2%.%date:~3,2%.%date:~6,4% создает папку, имя которой –  текущая дата:

mkdir “f:backup%date:~0,2%.%date:~3,2%.%date:~6,4%”

xcopy “e:superBD*.*” “f:backup%date:~0,2%.%date:~3,2%.%date:~6,4%*.*” /E /F /H /R /K /Y /D

rem Должно работать и без mkdir, т.к. xcopy сам бы создал папку. Подстраховка =)

Поясню по используемым ключам XCOPY:

/E Копирует все подкаталоги, включая пустые.

/F Выводит имена исходных файлов и файлов-результатов в процессе копирования.

/H Включает в операцию копирования скрытые и системные файлы. По умолчанию системные файлы игнорируются.

/R Копирует файлы с атрибутом «только для чтения».

/K Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут.

/Y Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.

/D[:мм-дд-гггг] Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.

О дополнительных ключах xcopy можно почитать на microsoft.com

Резервное копирование с использованием WinRAR

del “f:backupold” /s /q

rmdir “f:backupold” /s /q

rename “f:backupnew” “old”

mkdir “f:backupnew”

“C:Program FilesWinRARRar.exe” a -m5 -r -t -dh -idp f:backupnewbackup.rar “D:superBD*.*” >> f:backupnewbackup.log

Если прикрутить сюда вышеописанную %date:~0,2%.%date:~3,2%.%date:~6,4%, то

“C:Program FilesWinRARRar.exe” a -m5 -r -t -dh -idp f:backup.rar “E:superBD*.*” >> f:%date:~0,2%.%date:~3,2%.%date:~6,4%.log

ren “f:backup.rar” “%date:~0,2%.%date:~3,2%.%date:~6,4%.rar”

log-файлы я стер

Подробнее о ключах запуска Rar.exe можно почитать в файле C:Program FilesWinRARRar.txt



После того как батник создан и проверен – можно создать задание на автоматический запуск, например ночью, когда юзвер спит :-) . Жми пусквыполнить – вводи control schedtasks – жми ентер. Откроется планировщик заданий, там проще некуда.

Удачи!

З.Ы. Не бэкапьте на логических разделах тех же самых винтов. :-)

10 thoughts on “Резервное копирование: использование bat-файла

  1. ToTeR

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

    Reply
  2. defoult

    тогда скрипт существенно усложнится. С такими задачами мне не приходилось сталкиваться ( через cmd) . Думаю реализация возможна. А вариант с именем-датой архива Вам не подходит?  Дозаписывать не придется, но и не потеряются данные.

    Reply
  3. Игорь

    Не работает ! Постоянно бегут строчки в командной строке и ничего не происходит кроме создания папки “backup22.07.2011″ после долгого ожидания просто закрыл !

    Reply
  4. Rinsor

    Спасибо за статью, очень помогла разобраться с батником резервного копирования.
    Добавил в параметры архиватора -ag+YYYY.MM.DD, позволяет обойтись без переименовывания.

    Reply
  5. денис

    А что нужно написать чтобы один файл бэкапировался во все директории?

    Reply
  6. Tzerber

    Приветствую
    При использовании
    “C:Program FilesWinRARwinRar.exe” a -m4 -r -rr -t D:Copy_ntemp.rar “D:Copy_n%date:~0,2%.%date:~3,2%.%date:~6,4%”
    ren D:Copy_ntemp.rar “%date:~0,2%.%date:~3,2%.%date:~6,4%.rar”
    получаем архив содержащий в себе папки Copy_n%date:~0,2%.%date:~3,2%.%date:~6,4%*.*
    Можно ли избавиться от каталога Copy_n в архиве ? (по идее помещать должно в архив содержимое Copy_n%date:~0,2%.%date:~3,2%.%date:~6,4%*.*, а не всю топологию)
    Спасибо.

    Reply
  7. Иваныч

    Хм, зачем писать
    md %date:~0,2%.%date:~3,2%.%date:~6,4%
    если результат соответствует более простой команде: md %date% ?

    Reply
  8. Вартан

    А я сделал скрипт в Dr.Batcher ( http://www.drbatcher.com ), там даже специальный визард для этого есть. Бэкапит нормально вроде:)

    Reply

Добавить комментарий для zax Отменить ответ

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