blacks2
29-10-2020, 09:17
Здравствуйте.
Прошу помощи.
Скрипт бекапера
В папке e:\backup_dir создаются папки
\20170101_11_53_name_year\ - беки создаются раз в 1-12 месяцев
\20201205_10_23_name_small\ - беки создаются каждый день
...
внутри файлы, с одинаковыми названиями
После создания, проводится чистка старых файлов и папок.
Соответственно, чистка "forfiles за Х дней" - чистится всё:
И годовой бекап теряется при создании каждодневного...
ВЫВОД:
Нужна чистка папки по заданной маске (например *_year )
Вариант А.
- плох: полюбому чистятся все каждодневные и годовые файлы...
- а сделать: работа по маскам директорий, из которых будут удаляться старые файлы, а после и сами папки...
- не имею представления как! :sorry:
@ECHO OFF
chcp 866
SET BKUP_DelPath=е:\backup_dir
SET BKUP_DelLogs=е:\backup_dir\Deleted.log
SET BKUP_Max_Days=7
forfiles /p "%BKUP_DelPath%" /s /m * /D -%BKUP_Max_Days% /C "cmd /c del /q /s @path" >> %BKUP_DelLogs%
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BKUP_DelPath%" /S /B /A:D ^|Sort /R`) DO 2>nul Rd "%%d"&&>>"%BKUP_DelLogs%" Echo "%%d"
echo pause and end
PAUSE >nul
Вариант B.
Решение находит папки по маске и чистить в них файлы +сами папки по маске
(рабочее: хоть и пишет "ОШИБКА: не удается найти указанный файл")
@ECHO OFF
chcp 866
SET BKUP_DelPath=е:\backup_dir
SET BKUP_DelLogs=е:\backup_dir\Deleted.log
SET BKUP_Max_Days=7
forfiles /S /P "%BKUP_DelPath%" /M *_base /D -%BKUP_Max_Days% /C "cmd /C if @isdir == TRUE (rd /S /Q @path) else (del /F /A @path)" >> "%BKUP_DelLogs%"
echo pause and end
PAUSE >nul
Однако,
Сколько методом тыка(знаний не хватает) не пытался сделать вывод в лог - не получалось
Хотя пример и найден на просторах буржунета, и вроде у них работает... - но у меня нет.
Очень прошу помощи:
а. с правкой варианта #А. - под задачу работы с масками
или
б. с вариантом #В. - настроить вывод в лог (если такое возможно)
ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО!
PS
простым решением было бы создание субпапок
e:\backup_dir\_year\
e:\backup_dir\_smal\
но вроде как моё ядро бекапера порушится/переписывать
а главное, когда все папки с датами в одной месте - то наглядно, всё видно, оценка, анализ...
Прошу помощи.
Скрипт бекапера
В папке e:\backup_dir создаются папки
\20170101_11_53_name_year\ - беки создаются раз в 1-12 месяцев
\20201205_10_23_name_small\ - беки создаются каждый день
...
внутри файлы, с одинаковыми названиями
После создания, проводится чистка старых файлов и папок.
Соответственно, чистка "forfiles за Х дней" - чистится всё:
И годовой бекап теряется при создании каждодневного...
ВЫВОД:
Нужна чистка папки по заданной маске (например *_year )
Вариант А.
- плох: полюбому чистятся все каждодневные и годовые файлы...
- а сделать: работа по маскам директорий, из которых будут удаляться старые файлы, а после и сами папки...
- не имею представления как! :sorry:
@ECHO OFF
chcp 866
SET BKUP_DelPath=е:\backup_dir
SET BKUP_DelLogs=е:\backup_dir\Deleted.log
SET BKUP_Max_Days=7
forfiles /p "%BKUP_DelPath%" /s /m * /D -%BKUP_Max_Days% /C "cmd /c del /q /s @path" >> %BKUP_DelLogs%
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BKUP_DelPath%" /S /B /A:D ^|Sort /R`) DO 2>nul Rd "%%d"&&>>"%BKUP_DelLogs%" Echo "%%d"
echo pause and end
PAUSE >nul
Вариант B.
Решение находит папки по маске и чистить в них файлы +сами папки по маске
(рабочее: хоть и пишет "ОШИБКА: не удается найти указанный файл")
@ECHO OFF
chcp 866
SET BKUP_DelPath=е:\backup_dir
SET BKUP_DelLogs=е:\backup_dir\Deleted.log
SET BKUP_Max_Days=7
forfiles /S /P "%BKUP_DelPath%" /M *_base /D -%BKUP_Max_Days% /C "cmd /C if @isdir == TRUE (rd /S /Q @path) else (del /F /A @path)" >> "%BKUP_DelLogs%"
echo pause and end
PAUSE >nul
Однако,
Сколько методом тыка(знаний не хватает) не пытался сделать вывод в лог - не получалось
Хотя пример и найден на просторах буржунета, и вроде у них работает... - но у меня нет.
Очень прошу помощи:
а. с правкой варианта #А. - под задачу работы с масками
или
б. с вариантом #В. - настроить вывод в лог (если такое возможно)
ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО!
PS
простым решением было бы создание субпапок
e:\backup_dir\_year\
e:\backup_dir\_smal\
но вроде как моё ядро бекапера порушится/переписывать
а главное, когда все папки с датами в одной месте - то наглядно, всё видно, оценка, анализ...