Имя: Пароль:
IT
Админ
pg_dump + текущая дата на windows server 2012
0 newbling
 
30.09.16
16:16
Доброго времени суток. Не подскажете как задать текущую дату при архивации через консольку?
1 newbling
 
30.09.16
16:21
На данный момент делаю так

cd "адрес постгре\bin"
.\pg_dump.exe -Ft -h адрес сервера -U юзер -c база > адрес архива

cd "адрес 7-зипа\7-Zip"
.\7z.exe a -tzip адрес архива+[ТекущаяДата?].zip адрес архива
del адрес архива
2 newbling
 
30.09.16
16:23
всё отрабатывает, но вот текущую дату я никак не могу побороть
3 eRik
 
30.09.16
16:38
Есть несколько вариантов, у меня в батнике так:

set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%
7z.exe a e:\archive\base1c_%now%.7z e:\config\*.1CD
4 Fragster
 
гуру
30.09.16
16:49
я себе из-за этого унылого cmd cygwin на сервер поставил
5 Fragster
 
гуру
30.09.16
16:51
и теперь нормально работает

#!/bin/bash
backupname='(a)'`date +%Y.%m.%d%H.%M.%S`
6 newbling
 
30.09.16
16:55
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%

а что за ~-4
7 newbling
 
30.09.16
17:10
О, отработало присвоение даты, только вот что-то с кодировокй, надо ещё попробовать chcp 1251 сделать
8 eRik
 
30.09.16
17:12
>а что за ~-4
отрезать последние 4 символа
9 eRik
 
30.09.16
17:12
*в смысле, взять последние 4
10 newbling
 
30.09.16
17:14
(9) ясно, спасибо, сейчас как отработает - по результатам скину готовый код, мб ещё кому понадобится
11 newbling
 
30.09.16
17:22
:: меняем кодировку
CHCP 1251

:: задаём текущую дату
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%

:: делаем дамп средствами pg_dump.exe
cd "АдресГдеЛежит_pg_dump.exe"
.\pg_dump.exe -Ft -h АдресСервераБД -U ЮзерАдминПостгре -c НазваниеБазыВКластере > АдресКудаУпадётДамп

:: архивируем дамп, добавляем дату в название и удаляем незаархивированную версию
cd "Адрес7Зип"
.\7z.exe a -tzip АдресКудаУпадётАрхив%now%.zip АдресГдеЛежитДамп
del АдресГдеЛежитДамп
12 newbling
 
03.10.16
16:49
Теперь вопрос как восстановить =D
Пробую

cd "АдресГдеЛежит_pg_restore.exe"
.\pg_restore.exe -h АдресСервераБД -U ЮзерАдминПостгре -c НазваниеБазыВКластере "АдресГдеЛежитДамп"

ну и он ругается на то, что мног опараметров, начиная с "АдресГдеЛежитДамп". Хотя, во всех описаниях именно так.
13 newbling
 
03.10.16
16:50
я сейчас пробую делать не -Ft, а Fc - так он сразу его сжимает и вроде ка кв описании позволяет поднимать в ресторе.
14 newbling
 
03.10.16
16:58
Хм, по ходу не надо ему -c НазваниеБазыВКластере указывать
15 NorthWind
 
03.10.16
17:01
(4) тоже вариант... хотя можно использовать штатный гораздо менее унылый PowerShell и штатный не менее веселый VBS.
16 newbling
 
03.10.16
17:02
.\pg_restore.exe -h АдресСервераБД -U ЮзерАдминПостгре "АдресГдеЛежитДамп"

Если так сделаем, то он куда восстановит базу? Там в дампе лежит изначальный адрес что ли?
17 newbling
 
03.10.16
17:28
вот так вроде что-то получилось
cd "адрес pg_restore.exe"
.\pg_restore.exe --host хост --port порт --username суперюзер --dbname имя базы --clean --verbose "адрес дампа"
18 Fragster
 
гуру
03.10.16
17:48
(15) тогда еще повершелла не было. ну и под линупсом работает единообразно почти.
19 newbling
 
04.10.16
14:19
(17) пардон, не тот буфер - вот так отработало
.\pg_restore.exe -h хост -p порт -U суперюзер -d имя базы -c -v "адрес дампа"

-с это дропать таблички в найденной базе, я так понимаю это не обязательно, а -v это сообщать подробно что происходит

Дамп же я решил делать в формате -Fc, а ни -Ft. Ft грузит просто плейн текст, который потом архивировать, а -c в формате, подходящем для рестора, но уже ужатом. В сравнении с архивацией 7-зипом получается где-то на 10% толще - не критично. По времени быстрее значительно.
Независимо от того, куда вы едете — это в гору и против ветра!