среда, 2 июля 2014 г.

Скрипты для перекладывания архивов sql/1C (windows + forfiles + cygwin)

Допустим архивы создаются в сетевом каталоге "дневной", куда они ежедневно прилетают от sql сервера. Недельный хранится соответственно в сетевой "недельный", а месячный там тоже соответственно.

Начальный каталог для несжатых архивов sql g:\1c_server_backup  (внутри него дневной, недельный и тд)

Там они архивируются и сразу перебрасываются по итоговым местам хранения вот  таким например пакетником:


@echo off 
g:
cd "g:\1c_server_backup\недельный"
F:\arch\forfiles.exe /D -6 /P g:\1c_server_backup\недельный /S /M *.bak > c:\temp\week2rar.tmp
c:\progra~1\winrar\winrar m -m2 -tl "f:\arch\1C папка 2\недельный\weekly-%date:~-10%.rar" @c:\temp\week2rar.tmp

g:
cd "g:\1c_server_backup\месячный"
F:\arch\forfiles.exe /D -28 /P g:\1c_server_backup\месячный /S /M *.bak > c:\temp\mon2rar.tmp
c:\progra~1\winrar\winrar m -m2 -tl "f:\arch\1C папка 2\месячный\monthly-%date:~-10%.rar" @c:\temp\mon2rar.tmp

так же"недельный" "месячный" хотим хранить по нужным каталогам (ГОД_МЕСЯЦ_ДЕНЬ)
Это делаем вот таким cygwin-скриптом

#!/bin/sh
#move2dstdir.sh - скрипт
arr=('недельный' 'месячный')

 for type in ${arr[@]}; do
   for i in `ls /cygdrive/g/1c_server_backup/$type/torg_b* | gawk -F_ '{print $6"_"$7"_"$8}'`; do 
     mkdir /cygdrive/g/1c_server_backup/$type/$i;
     mv /cygdrive/g/1c_server_backup/$type/*$i*.rar /cygdrive/g/1c_server_backup/$type/$i ;done
 done

естественно, что данный скрипт из виндозы мы запускаем командой вроде этой:
C:\cygwin\bin\mintty.exe -e /cygdrive/d/scripts/move2dstdir.sh