|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файлов по расписанию |
|
CMD/BAT - [решено] Копирование файлов по расписанию
|
Новый участник Сообщения: 21 |
Добрый день! Нужна помощь в создании скрипта, который копировал бы файлы созданные 1 и 15 числа каждого месяца из папки "\\10.10.0.1\BackUp\Base1\" в папку "Z:\SQL\Bases1"
Возможно есть вариант удалять промежуточные бэкапы из папки \\10.10.0.1\BackUp\Base1\ , оставляя каждый месяц бэкап 1 числа, 15 числа, и 5 последних. Бэкапы создаются каждый день в формате .rar |
|
Отправлено: 11:39, 30-08-2019 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата c0t0s:
Как ориентироваться на даты? Они как-то фигурируют в именах или надо ориентироваться исключительно на дату последнего изменения? |
|
------- Последний раз редактировалось megaloman, 30-08-2019 в 12:35. Отправлено: 12:16, 30-08-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Work_backup_2019_08_29_051354_6868648.bak.rar - В папке только архивы с бэкапами SQL, имя одинаковое, только число меняется. |
|
Отправлено: 12:37, 30-08-2019 | #3 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать @Echo Off cls Call :JobBack "\\192.168.100.23\test1\base1\Work_backup_" "_*_*.bak.rar" "01 15" 5 "Z:\SQL\Bases1" Exit /B :JobBack For %%d In (%~3) Do >nul Xcopy /Y /D "%~120??_??_%%d%~2" "%~5\" FOR /F "usebackq Skip=%4 delims=" %%f IN (`2^>nul Dir "%~120??_??_??%~2" /B /A:-D /O:-N`) DO ( Call :JobDel "%~dp1" "%~nx1" "%~dp1%%f" %3 ) Exit /B :JobDel Set "NDate=%~nx3" Call Set "NDate=%%NDate:*%~2=%%" Set "NDate=%NDate:~8,2%" For %%d In (%~4) Do If "%%d"=="%NDate%" Exit /B Del %3 Exit /B Call :JobBack в зависимости от разных префиксов бэкапов баз (то есть для разных баз) "01 15" дни месяца копируемых и хранимых бэкапов. Может быть несколько дат, например "01 08 15 22" 5 - число неудаляемых свежих бэкапов. Можете поставить иное число. Приведенный скрипт можете запускать планировщиком каждый день. Повторного копирования баз за 01 15 число не будет. Скрипт будет оставлять все исходные бэкапы за 01 и 15 числа и удалять все остальные, кроме 5 последних. |
------- Отправлено: 16:11, 30-08-2019 | #4 |
fascinating rhythm Сообщения: 6654
|
Профиль | Отправить PM | Цитировать Особо не проверял, допилите, если потребуется.
$src = "\\10.10.0.1\BackUp\Base1\" $files = gci $path |sort CreationTime |select -SkipLast 5 $dest = "Z:\SQL\Bases1" foreach ($file in $src) { if (($file.CreationTime).day -ne '1' -and ($file.CreationTime).day -ne '15') { Remove-Item $src\$file -Force -Recurse -confirm:$false } } & robocopy "$src" "$dest" /mir |
|
------- Отправлено: 22:12, 30-08-2019 | #5 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Call :JobBack "\\192.168.100.23\test2\base2\ IWZ_backup_" "_*_*.bak.rar" "01 15" 5 "Z:\SQL\IWZ" |
|
Отправлено: 15:41, 02-09-2019 | #6 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Вот часть кода архивирования бэкапа Поидее нужно дописать ключ -ag+YYYY_MM_DD, но не уверен, что это прокатит. |
|
Отправлено: 16:59, 02-09-2019 | #7 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата c0t0s:
Если у Вас бэкап изначально с именем IWZ_backup_201909020500.bak то rar не сделает Вам IWZ_backup_2019_09_02_0500.bak.rar Ключ -ag+YYYY_MM_DD допишет дату перед именем, -agYYYY_MM_DD допишет дату перед .rar Вот вариант для разных форматов дат
@Echo Off cls Call :JobBack "\\192.168.100.23\test1\base1\Work_backup_" "20??_??_%%%%d" "8,2" "_*_*.bak.rar" "01 15" "5" "Z:\SQL\Bases1" Call :JobBack "\\192.168.100.23\test1\base1\IWZ_backup_" "20????%%%%d" "6,2" "*.bak.rar" "01 15" "5" "Z:\SQL\IWZ" Exit /B :JobBack For %%d In (%~5) Do >nul Xcopy /Y /D "%~1%~2%~4" "%~7\" Call Set "Mask=%2" Call Set "Mask=%%Mask:d=??%%" FOR /F "usebackq Skip=%~6 delims=" %%f IN (`2^>nul Dir "%~1%Mask%%~4" /B /A:-D /O:-N`) DO ( Call :JobDel "%~dp1" "%~nx1" "%~dp1%%f" %5 %3 ) Exit /B :JobDel Set "NDate=%~nx3" Call Set "NDate=%%NDate:*%~2=%%" Call Set "NDate=%%NDate:~%~5%%" For %%d In (%~4) Do If "%%d"=="%NDate%" Exit /B Del %3 Exit /B |
|
------- Последний раз редактировалось megaloman, 02-09-2019 в 20:46. Отправлено: 20:23, 02-09-2019 | #8 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 09:30, 03-09-2019 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) | DIMM2005 | Программное обеспечение Windows | 36 | 03-01-2020 16:54 | |
Ищу программу для блокировки файлов паролями по расписанию | hddmitry@twitter | Хочу все знать | 9 | 16-01-2018 16:34 | |
CMD/BAT - Закачка файлов без перезаписи по расписанию на FTP-сервер через консоль | lexxstr | Скриптовые языки администрирования Windows | 0 | 08-02-2014 17:51 | |
CMD/BAT - [решено] Копирование файла по расписанию и его отправка по почте | LokkyZ | Скриптовые языки администрирования Windows | 8 | 03-10-2011 16:49 | |
Блог - Удаление временных файлов скриптом по расписанию | Vadikan | Microsoft Windows 7 | 0 | 26-05-2011 11:30 |
|