你在脚本中还是要调用数据库本身提供的备份命令啊,比如你可以用(postgres为数据库管理员用户):
su -l postgres -c 'pg_dump -u postgres test | gzip>/tmp/test.gz';
把这个加入一个定时进程就可以定时把数据库test备份到/tmp下test.gz文件,当然postgres要对该文件夹有写权限。
sqlserver没用过,不清楚

解决方案 »

  1.   

    提供备份和恢复的两个命令给你,因为备份的数据库表里含bytea所以用到-bpg_dump -bv -Fc -Z5 -d database > expdb &
    pg_restore -d database expdb建议你再仔细看看文档,写的很清楚的。
      

  2.   

    bytea类型并没必要必须用二进制归档,pg_dump 库名>文件名 归档也可以的。如果数据库中有用到大对象的话,就必须用二进制归档(也可以单独导出大对象的表),加-o -Ft -b之类参数。文本归档的好处是便于修改表属主及表定义之类。倒成insert语句恢复比较慢,但很可靠,倒成COPY语句恢复非常快,一般不会有什么问题,但我碰到过一次有问题的(应该极少出现,可能跟数据有关,COPY操作有隐含的问题),割接后发现有些表的数据恢复不完全,幸亏数据库目录都是备份过的,重新倒成INSERT语句恢复到新库就正常了。所以备份时最好也把数据库DATA目录备份一下,以防万一。
      

  3.   

    多谢指教。我用postgresql也没多久。还有许多不明白的地方,以后还要请教:)。
      

  4.   

    to随风
    如何建立定时进程?
    我想在过程中备份文件。这时怎么做?因为我是在B/S模式下。
    客户端如何调用服务器的pg_dumpall?
      

  5.   

    我这实际用的服务器都是运行在linux上的,备份数据库都是在服务器上的。unix系统都有定时进程。你可以用root或postgres用户身份建立定时进程。在命令行下:crontab -e编辑加入定时进程,里面可以调用你写好的备份命令,居然crontab用法网上资料很多,可以搜索下。root是没权限操作数据库的,如果加入root的话就要su 到postgres用户或pg_dump 后面加-U参数指明用户身份。