Windows Server - резервное копирование каталогов и баз данных - PullRequest
0 голосов
/ 01 декабря 2011

У нас была проблема на работе на прошлой неделе, которая была бы решена, если бы у нас было запланированное задание.

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

  • Резервное копирование веб-сайта (в основном, папки и всех его подкаталогов) каждое утро в 8:30 в определенную папку в формате websitename_year_month_day

  • Резервное копирование веб-сайта (в основном, папки и всех его подкаталогов)
    в 5:30 каждую ночь в определенную папку в формате websitename_year_month_day

  • Резервное копирование соответствующих БД в одно и то же время в ту же папку, в которой находится резервная копия веб-сайта.

Так, например, если веб-сайт называется swade1987

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

http://imageshack.us/photo/my-images/254/screenclip1.png/

Однако, в идеале, я бы хотел, чтобы она сохраняла резервные копии только за последние 7 дней.

Lookinжду ваших ответов о том, как лучше всего это сделать.

Если вам нужно больше разъяснений, дайте мне знать

Стивен

1 Ответ

0 голосов
/ 01 декабря 2011

вот что вам нужно:

  1. get 7za.exe - бесплатная автономная утилита сжатия Windows (поищите ее в командной строке 7z).

  2. используйте файл microsoft sqlcmd.exe для резервного копирования базы данных из командного файла (исполняемый файл sql executor из командной строки включен в mssql)

вот как называть ваши файлы: потому что вы хотите сохранить только последние 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%
...