Ну я думаю этот вопрос интересует добрую половину админов, которые не поленились и перевели свои конторы на LINUX послав дядюшку Билли куда подальше. Здесь речь пойдет о том как сделать бэкап в «.dt» - файл из 1Cv8 используя в качестве сервера PostgreSQL естественно речь идет о поднятом сервера 1С под линуксом. PostgreSQL под форточкой это ананизм, это мое мнение можете не соглашаться. Не будем обсуждать каким образом делать бэкап лучше, просто мне надо было именно в dt. От себя добавлю, что что делаю sql-выгрузку pg_dump, dt — это выгрузка в файл и не больше.
Итак, самый зад в том что wineсonsole не удастся запустить в текстовом режиме, ему все равно нужны иксы, если вы делаете выгрузку в ручную, то тут проблем нет, а вот если по cron-у то …
Решение оказалось очень простым запустим vnc4server а в качестве приложения запускаемого в Х-сесси укажем наш скрипт.

$sudo apt-get  install vnc4server rcconf
$rcconf — убираем автостарт vnc4server

#su userdt
$vncpasswd — пароль по барабану, только не пустой
Редактируем файл /home/userdt/.vnc/xstartup

#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

#< -x /etc/vnc/xstartup > && exec /etc/vnc/xstartup
#< -r $HOME/.Xresources > && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
/usr/local/bin/1c_backup_dt #это наш скрипт бэкапа 
Содержимое /usr/local/bin/1c_backup_dt

#!/bin/bash
DT=`date +%F`
BASE='E:\public\1C_Backup\'$DT".dt"
LOGFILE='E:\public\1C_Backup\'$DT".log"
echo $BASE
wineconsole "C:\Program Files\1cv82\common\1cestart.exe" DESIGNER /WA- /DisableStartupMessages /S"server\base" /N"user" /P"password" /DumpIB "$BASE" /out"$LOGFILE"  &2>1 > /dev/null
sleep 600 ; #время необходимое для выполнения бэкапа в секундах
/usr/bin/vnc4server -kill :1 ; 
[ ! -z "`pgrep Xvnc4`" ] && killall Xvnc4 ; #Навсякий
[ ! -z "`pgrep Xvnc4`" ] && killall Xvnc4 -9 #или уж если совсем все плохо

Теперь редактируем /etc/crontab

30 06 * * * userdt /usr/bin/vnc4server
Вуаля теперь в 6-30 утра создается выгрузку на каждый день в /public/1C_Backup он же E:\public\1C_Backup\ . Как говорят сами 1с-чики бэкап деалть таким способом неследует. Бэкап рекомендуется делать sql-средствами, а конкретно pg_dump. Навсякий ниже приведу скрипт своего бэкапа его прелесть в том что он сам находит все базы в postgresql кроме служебных и делает выгрузку каждой базы в отдельности.

#!/bin/bash 
clear 
 
for DBNAME in  `su -c 'psql -tc "select datname from pg_database";' postgres` 
do 
    if [ $DBNAME != "postgres" ] && [ $DBNAME != "template0" ] && [ $DBNAME != "template1" ]; 
        then 
            FN=/public/arc/sql/`/bin/date +%d%m%y%H%M` 
            BKNAME=$FN-$DBNAME.gz 
            echo $BKNAME 
            /bin/su -c "/usr/bin/pg_dump -F c $DBNAME  | /bin/gzip -c >  $BKNAME" postgres 
        fi 
done 
Используются технологии uCoz