Скрипт трущий нечётные бэкпы, которые старше определённого времени.
Нужно тереть бэкапы (файлы oeГГГГ-ММ-ДД_23.rar) в папке C:\OE\OEBackUp\. Причём, не просто так, а которые старше 2х недель и из оставшихся, тереть нечётные.
Ибо за месяц, бэкапы вырастают до 50ГБ, а изменяются там всего несколько строк в БД.
Будет всё это запускаться Планировщиком Windows раз в неделю.
Плюс хотелось бы видеть лог в \\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt
Заранее спасибо.
|
как часто создаются бэкапы? если они каждодневные, то можно сделать например так:
Код:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
rem перебираем файлы по маске oe*23.rar с сортировкой по дате с самого свежего начиная с 15-го файла
for /F "skip=14, delims=.rar" %%f in ('dir /B /O-D C:\OE\OEBackUp\oe*23.rar') do (
rem удаляем файлы и пишем в лог что и когда было удалено
del /q /f "C:\OE\OEBackUp\%%f" && echo "C:\OE\OEBackUp\%%f deleted %date%" >> \\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt
)
АХТУНГ! Избегай рускоязычных названий папок, а то будет эта хрень работать с пятого на десятое.
я бы рекомендовал для логов расшарить отдельную папку с доступом только для админов (все равно больше никто их читать не будет) и выделенную в коде курсивом часть поменять на \\file_server\logs
|
Elven, Я на сервере, где бэкапы, тупо расшарю папку и буду туда писать. Спасибо, завтра попоробую.
А скрипт именно нечётные удаляет даты?
Бэкапы делаются каждый день.
|
Цитата:
Цитата i-Lex
А скрипт именно нечётные удаляет даты? »
|
нет. для удаления нечётных дат, попробуйте дописать ниже скрипта Elven строчки
Код:
:: удаляем не чётные даты
for /f "tokens=1-4 delims=_-" %%a in ('dir /b /s "C:\OE\OEBackUp\oe*_23.rar"') do (
set /a chet=%%c%%2
if "!chet!"=="1" echo del /f /q "%%a-%%b-%%c_%%d"
)
для боевого пуска убрать echo
Цитата:
Цитата Elven
Избегай рускоязычных названий папок »
|
Проблема с кириллицей решается сохранением батника в 866 кодировке.
|
Цитата:
Цитата sov44
Проблема с кириллицей решается сохранением батника в 866 кодировке. »
|
Это Юникод, или DOS'овская кодировка?
Цитата:
Цитата sov44
для удаления нечётных дат, попробуйте дописать ниже скрипта Elven строчки »
|
т.е. это будет выглядеть примерно так:
Код:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
rem перебираем файлы по маске oe*23.rar с сортировкой по дате с самого свежего начиная с 15-го файла
for /F "skip=14, delims=.rar" %%f in ('dir /B /O-D C:\OE\OEBackUp\oe*23.rar') do (
rem удаляем файлы и пишем в лог что и когда было удалено
del /q /f "C:\OE\OEBackUp\%%f" && echo "C:\OE\OEBackUp\%%f deleted %date%" >> \\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt
)
:: удаляем не чётные даты
for /f "tokens=1-4 delims=_-" %%a in ('dir /b /s "C:\OE\OEBackUp\oe*_23.rar"') do (
set /a chet=%%c%%2
if "!chet!"=="1" echo del /f /q "%%a-%%b-%%c_%%d"
)
?
|
Код:
@echo off
chcp 1251>nul
setlocal enabledelayedexpansion
set "folder=C:\OE\OEBackUp"
set "log=\\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt"
(
set /p=%date% %time%<nul
set "command=cmd /c del /a /f /q @file&& echo @file deleted"
forfiles /p "%folder%" /d -14 /c "!command!"
for /l %%i in (1 2 31) do (
set day=0%%i
for %%j in ("%folder%\oe20??-??-!day:~-2!_23.rar") do (
del /a /f /q "%%~j" 2>nul&& (
echo "%%~nxj" deleted
))
)
echo.
)>>"%log%"
endlocal
exit /b
|
Эм... Он снёс все бэкапы...
|
Цитата:
Цитата i-Lex
Эм... Он снёс все бэкапы... »
|
Надеюсь экспериментировали не с оригинальными бэкапами?
немного поправил код Elven, добавил свой
Код:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: перебираем файлы по маске oe*_23.rar с сортировкой всех файлов по дате от самых свежих, не обрабатывая первых 14 файлов.
for /f "skip=14 delims=" %%f in ('dir /b /o-d "C:\OE\OEBackUp\oe*_23.rar" 2^>nul') do (
echo del /f /q "C:\OE\OEBackUp\%%f" && >>deleted.log echo. "C:\OE\OEBackUp\%%f deleted %date%"
)
:: удаляем не чётные даты
for /f "tokens=1-4 delims=_-" %%a in ('dir /b /s "C:\OE\OEBackUp\oe*_23.rar"') do (
set /a chet=%%c%%2
if "!chet!"=="1" echo del /f /q "%%a-%%b-%%c_%%d"&& >>deleted.log echo. C:\OE\OEBackUp\%%a-%%b-%%c_%%d
)
после проверки, для боевого пуска удалить echo (выделено два раза синим цветом)
|
Цитата:
Цитата sov44
Надеюсь экспериментировали не с оригинальными бэкапами? »
|
Бэкапы забэкапил)
Цитата:
Цитата sov44
if "!chet!"=="1" echo del /f /q »
|
Между "1" и del пробел один?
|
Время: 20:54.
© OSzone.net 2001-