Windows Server - резервное копирование каталогов и баз данных
На прошлой неделе у нас была проблема на работе, которая была бы решена, если бы у нас была запланированная задача.
В основном я хочу знать, что мне нужно создать командный файл, который выполняет следующие задачи на сервере Windows.
Резервное копирование веб-сайта (в основном, папки и всех его подкаталогов) в 8:30 каждое утро в определенную папку в формате websitename_year_month_day
Резервное копирование сайта (в основном папка и все ее подкаталоги)
в 5:30 каждую ночь в определенную папку в формате websitename_year_month_dayРезервное копирование соответствующих БД в то же время в ту же папку, в которой находится резервная копия сайта.
Так, например, если сайт называется swade1987
Папка будет иметь эту файловую структуру, показанную во вложении.
http://imageshack.us/photo/my-images/254/screenclip1.png/
Тем не менее, в идеале я бы хотел, чтобы он сохранял только резервные копии за последние 7 дней.
Ждем ваших ответов о том, как лучше всего это сделать.
Если вам нужно больше разъяснений, дайте мне знать
Стивен
1 ответ
вот кусочки, которые вам нужны:
get 7za.exe - бесплатная, автономная утилита сжатия Windows (Google для 7z командной строки, и вы найдете его).
используйте файл sqlcmd.exe от microsoft для резервного копирования базы данных из командного файла (в mssql включен sql executor для командной строки)
Вот как называются ваши файлы: поскольку вы хотите сохранить только последние 7 дней, не указывайте дату в имени, добавьте аббревиатуру для даты недели в имени файла. например, website_mon.zip
Вот пример командного файла, который делает это. ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК. это не было проверено. я просто придумал это с макушки головы. следуйте коду и комментариям и изменяйте по мере необходимости. я был бы шокирован, если бы не было опечатки или три. также следите за командами dos, которые вы добавляете / изменяете... если они содержат длинные имена файлов, вам может потребоваться добавить некоторые окружающие кавычки.
@echo off
set SHORTDATE=%DATE:~0,3%
set DB_ZIP_FILE=c:\backups\sitedb_%SHORTDATE%.zip
set WWW_ZIP_FILE=c:\backups\siterot_%SHORTDATE%.zip
set WEBSITE_DIR=c:\mysite\wwwroot
set SQL_FILE=c:\temp\backup.sql
rem * get rid of our old backups
rem * this is for our protection ... if there
rem * was a problem with a zip (corruption)
rem * our backups will fail if we don't get rid
rem * of the old zips.
rem *
if exist %DB_ZIP_FILE% del %DB_ZIP_FILE%
if exist %DB_ZIP_FILE% del %WWW_ZIP_FILE%
rem * create a temp file containing the sql script
echo BACKUP DATABASE YOUR_DB_NAME> %SQL_FILE%
echo TO DISK='c:\temp\sitedb-%SHORTDATE%.bak'>>%SQL_FILE%
echo WITH FORMAT, Name='Daily sitedb %SHORTDATE%' >> %SQL_FILE%
echo %DATE% %TIME% backing up SITEDB
call sqlcmd -U YOURUSER -P YOURPASSWORD -i %SQL_FILE% > NUL
rem ** zip the files - we remove the old one before starting
call 7za a -tzip %ZIP_FILE% c:\temp\sitedb-%SHORTDATE%.bak
rem ** delete the bak file
del c:\temp\sitedb-%SHORTDATE%.bak
rem ** now zip up our web site directory
7za a -tzip -r %WEBSITE_DIR% %WWW_ZIP_FILE%