В статье:
- Опишу и приведу примеры создания бэкапов используя командную строку.
- “Подробно” распишу команду 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 – жми ентер. Откроется планировщик заданий, там проще некуда.
Удачи!
З.Ы. Не бэкапьте на логических разделах тех же самых винтов.
а как сделать так чтобы…файл в папку которую копируем…не изменялся полностью на новый…а дописывался…? например если это тхт файл…то он если удалить информацию из файла который нада скопировать и он будет пустой…то и при копировании он изменяет файл который в резервной папке, т.е. он тоже становится пустым…
тогда скрипт существенно усложнится. С такими задачами мне не приходилось сталкиваться ( через cmd) . Думаю реализация возможна. А вариант с именем-датой архива Вам не подходит? Дозаписывать не придется, но и не потеряются данные.
Не работает ! Постоянно бегут строчки в командной строке и ничего не происходит кроме создания папки “backup22.07.2011″ после долгого ожидания просто закрыл !
спасибо работает отлично
Спасибо за статью, очень помогла разобраться с батником резервного копирования.
Добавил в параметры архиватора -ag+YYYY.MM.DD, позволяет обойтись без переименовывания.
СпасибООО! Еще бы с 7zip инструкцию …
А что нужно написать чтобы один файл бэкапировался во все директории?
Приветствую
При использовании
“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%*.*, а не всю топологию)
Спасибо.
Хм, зачем писать
md %date:~0,2%.%date:~3,2%.%date:~6,4%
если результат соответствует более простой команде: md %date% ?
А я сделал скрипт в Dr.Batcher (http://www.drbatcher.com ), там даже специальный визард для этого есть. Бэкапит нормально вроде:)