![]() |
Удаление архива за вчерашнюю дату
Здраствуйте. Вобщем проблема такая, есть бат скрипт, который бэкапит файлы на серваке в архив, а далее копирует их в сетевое хранилище. Причем при создании архива в его имя автоматически вбивается текущая дата, как сделать так, чтобы после того как архив скопируется удалялся архив за предыдущую дату? Заранее огромное спасибо!
|
Вы не написали ТОЧНО как именуются Ваши файлы, поэтому вот батник, удаляющий файлы, созданные НЕ СЕГОДНЯ, безотносительно к имени, в указанной директории.
Код:
@Echo off |
у меня вот такой вот скрипт работает
set DIR_BACKUP=j:\BackUp\ set NAME_PC=serverasu\mssql2 Set DIR_BACKUP_DOUBLE=\\vega\BackUp\ md %DIR_BACKUP% sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sdnp TO DISK = N'%DIR_BACKUP%\sdnp.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE ruk TO DISK = N'%DIR_BACKUP%\ruk.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE uva TO DISK = N'%DIR_BACKUP%\uva.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE okp TO DISK = N'%DIR_BACKUP%\okp.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE nariad TO DISK = N'%DIR_BACKUP%\nariad.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sd TO DISK = N'%DIR_BACKUP%\sd.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sed TO DISK = N'%DIR_BACKUP%\sed.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE osnastka TO DISK = N'%DIR_BACKUP%\osnastka.bak' with init" Echo End wait sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE servicedesk TO DISK = N'%DIR_BACKUP%\servicedesk.bak' with init" Echo End wait set NAME_PC=serverasu\mssql1 sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE upp TO DISK = N'%DIR_BACKUP%\upp.bak' with init" Echo End wait "C:\Program Files\7-Zip\7z.exe" a %DIR_BACKUP%\BackUp_mssql_%DATE%.7z %DIR_BACKUP%\*.bak del /f/q %DIR_BACKUP%\sdnp.bak del /f/q %DIR_BACKUP%\ruk.bak del /f/q %DIR_BACKUP%\uva.bak del /f/q %DIR_BACKUP%\okp.bak del /f/q %DIR_BACKUP%\nariad.bak del /f/q %DIR_BACKUP%\sd.bak del /f/q %DIR_BACKUP%\sed.bak del /f/q %DIR_BACKUP%\osnastka.bak del /f/q %DIR_BACKUP%\upp.bak xcopy %DIR_BACKUP%BackUp_mssql_%DATE%.7z %DIR_BACKUP_DOUBLE% Цитата:
|
Насколько я понял, накапливаются лишние файлы .7z в папке %DIR_BACKUP%
Для моего скрипта указать Set Folder==j:\BackUp а в xcopy лучше вместо *.* указать BackUp_mssql_*.7z Вообще-то после конкретной постановки задачи решение можно сделать красивее. Код:
@Echo off |
можно еще так:
1. создание архива: %RAR% %RAR_param% %RAR_arhive% где: 2. удаление старых архивов: forfiles /P P:\ /M *.* /S /D -5 /C "cmd /c echo Deleted: @PATH >> %DIR_log%erase.log & del @FILE" где: |
Скрипт удаляет все в заданной папке, старше указанного времени
|
Время: 17:01. |
Время: 17:01.
© OSzone.net 2001-