首页 > 学技术 > 技术网文 > IBM AS400应用论坛 > 正文

[精彩] 关于自动备份上传得程序所遇到的问题[问题已解决,并已将文档上传]


来源 chinaunix.net 酷勤网整理

本问题已经解决,我已将操作文档发到了后面的跟帖中(20楼)!希望对大家有用!

[文档内容摘要]
对系统中的库文件定期备份可以保证其运行的稳定性与安全性,关于此备份可以用手动人工备份,当然也可以实现自动备份并通过网络传输到备份服务器。
要求:对指定库(EPODCMS)实现自动定时(01:00:00)自动备份成*SAVF,每次备份的名字按序排列(CMS+备份日期),并将其备份文件传送至远端目标400服务器。
分析:定时备份可以通过Job Schedule实现,备份的实现需要用到命令CRTSAVF和SAVLIB两个命令,名字按序排列需要使用RTVJOBA,文件传输使用FTP方式。
实现:因为此操作需要使用CL编程所以需要系统中装用WDS组件。假定需要备份的库以及存储备份的库已经存在,此例中备份库为EPODCMS,存储库为EPODBAK,用户库为JANCE,若所需库不存在可用CRTLIB进行创建。

…………

[ 本帖最后由 jance 于 2006-8-7 13:59 编辑 ]



 aliceliu 回复于:2006-08-02 21:04:21

0001.00 jance pass                                                              
0002.00 bin                                                                     
0003.00 quote site namefmt 1                                                    
0004.00 cd qsys.lib/jance.lib                                                   
0005.00 put epodbak/&savfname  

上面的第五行文件名错了,不能是个参数


 aliceliu 回复于:2006-08-02 21:05:01

0022.00 > put epodbak/&savfname                         
0023.00 Character (&) is not allowed in object name.    
0024.00 Enter an FTP subcommand.                        
0025.00 > quit                                          
0026.00 221 QUIT subcommand received.                                           
        ****************** End of data **************************************** 
从这个LOG信息也可以看出是文件名出错了。


 jance 回复于:2006-08-02 22:10:03

恩,谢谢,关键问题就是这个名字,我该用什么办法解决呢?因为我对CL编程还不太熟悉,希望得到大家的帮助啊!!


 fxf_china 回复于:2006-08-03 10:12:27

参考一下http://www.chinaunix.net/jh/10/223260.html


 jance 回复于:2006-08-03 10:29:59

必须要使用CLP+RPG么?如果只使用CLP不能解决么?


 fxf_china 回复于:2006-08-03 10:35:11

put epodbak/&savfname                                                   
文件名称是变化的,用cl动态生成的话,就不用rpg了吧,我不会用cl动态生成:em15:
以前帖子有介绍吧


 jance 回复于:2006-08-03 10:45:37

引用:原帖由 fxf_china 于 2006-8-3 10:35 发表
put epodbak/&savfname                                                   
文件名称是变化的,用cl动态生成的话,就不用rpg了吧,我不会用cl动态生成:em15:
以前帖子有介绍吧 



能告诉我一下那个帖子的名字什么么?谢谢!

主要是现在我的400编程水平只能看懂CL程序,RPG的还看不太明白,轻舟老大那个帖子我都研究好长时间了,可还是搞不太清楚啊!


 qingzhou 回复于:2006-08-03 10:56:31

可按如下方法变通实现:

1、事先在AS400端创建好SAVF:
CRTSAVF    FILE(EPODBAK/Mysavf) TEXT('library epodcms') AUT(*CHANGE)   

2、修正CLP:
Columns . . . :    1  71            Edit                         JANCE/SPFEPOD 
SEU==>                                                                 EPODPGM 
FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7  
        *************** Beginning of data ************************************* 
0001.00 PGM                                                                     
0002.00              DCL        VAR(&DATE) TYPE(*CHAR) LEN(6)                   
0003.00              DCL        VAR(&SAVFNAME) TYPE(*CHAR) LEN(10)              
0004.00              RTVJOBA    DATE(&DATE)                                     
0005.00              CHGVAR     VAR(&SAVFNAME) VALUE('cms'||&DATE)              
[color=Blue]0006.00    /**     CRTSAVF    FILE(EPODBAK/&SAVFNAME) TEXT('library +         
0007.00                           epodcms') AUT(*CHANGE)                                       **/
0008.00              SAVLIB     LIB(EPODCMS) DEV(*SAVF) SAVF(EPODBAK/Mysavf)  +
                                        CLEAR(*ALL) [/color]
0009.00              OVRDBF     FILE(INPUT) TOFILE(JANCE/SPFEPOD) MBR(CMDFTP)   
0010.00              OVRDBF     FILE(OUTPUT) TOFILE(JANCE/SPFEPOD) MBR(OUTFTP)  
0011.00              FTP        RMTSYS('172.16.17.249')       
                           [color=Blue]DLTOVR     FILE(INPUT OUTPUT) [/color]                 
0012.00 END:ENDPGM                                                              
        ****************** End of data ****************************************


 jance 回复于:2006-08-03 11:01:36

哇,轻舟老大在啊,太好了,你给我的这个方法好像不能实现让备份文件每天自动按日期命名备份吧?


 qingzhou 回复于:2006-08-03 11:12:02

引用:原帖由 jance 于 2006-8-3 11:01 发表
哇,轻舟老大在啊,太好了,你给我的这个方法好像不能实现让备份文件每天自动按日期命名备份吧? 


RTVJOBA  DATE(*date)后,接着应该是对磁带执行INZ步骤:
INZTAP DEV(TAP01) VOL(&date) CHECK(*NO) CLEAR(*YES) 

然后再接下去的步骤。。。


 jance 回复于:2006-08-03 11:29:36

可能是我没说明白,我的需求是这样的:
在无人值守的情况下,将一个目标库每天定时备份成SAVF文件,文件名为CMS加当天日,然后再将这个文件,FTP到另外一台400上去,要求每天的备份都应存在(人工定期删除)。
现在的问题就是在FTP时,如何获取这个每天都不同的SAVF的文件名?


 qingzhou 回复于:2006-08-03 11:42:03

你这个程序错误之处并不是没有RTV到&DATE和创建SAVF不成功,而是INPUT的FTP脚本语言不支持参数变量造成。

Columns . . . :    1  71           Browse                        JANCE/SPFEPOD 
SEU==>                                                                  CMDFTP 
FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7  
        *************** Beginning of data ************************************* 
0001.00 jance pass                                                              
0002.00 bin                                                                     
0003.00 quote site namefmt 1                                                    
0004.00 cd qsys.lib/jance.lib                                                   
[color=Red]0005.00 put epodbak/&savfname[/color]                                                   
0006.00 quit                                                                    
        ****************** End of data **************************************** 

所以我采用固定SAVF名称的做法。

如果你想实现每天不同的SAVF名称备份,FTP脚本如何写就是个头疼的问题?!

如果你只是想实现备份最新的数据,那可以采取固定SAVF名称来处理。

[ 本帖最后由 qingzhou 于 2006-8-3 11:43 编辑 ]


 jance 回复于:2006-08-03 11:57:05

是啊,关键就是就是这个FTP的脚本这个头疼的问题,老大你有什么好的解决办法么?教我!


 qingzhou 回复于:2006-08-03 12:16:13

既然是双机之间传输备份,我们可以考虑另外一种解决方案:

1、双机热备MIMIX/400、OMS/400估计目前不现实。

2、那我们可以考虑双机之间配置好*anynet,然后充分利用savrstobj/savrstlib命令实现备份源机器的OBJ/LIB 到 目标机器的OBJ/LIB 。

如何配置*anynet,可以参考如下:
http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1622243I27000

http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1322001000003


 jance 回复于:2006-08-03 12:19:32

恩,谢谢老大!
P.S.:我给你发了短消息,你看看,有时间的话就教教我,嘿嘿,谢谢啦!


 jance 回复于:2006-08-03 16:07:27

看来对于这个问题是没有办法只用CL编程来实现了!

估计我可能使用如下办法了:400自动备份,PC自动从400上get的办法了,可是这种办法好像很拙略,而且还有可能会出现问题。

谢谢众位朋友!
P.S:轻舟老大如果你能把我给你发的短消息搞定就好了!呵呵!:)


 xuguopeng 回复于:2006-08-03 16:15:38

两台400间传送,用APPC over TCPIP是比较理想的

或者试试把SAVF放在只存放最新备份的LIB中,然后通过MGET *.* 的方式传过来


 jance 回复于:2006-08-03 19:17:09

谢谢鹏哥指点啊!
我使用Mput jance/*.*的方法实现了这个程序,虽然有点笨,但是总算成功了!
谢谢!


 jance 回复于:2006-08-04 12:21:28

谢谢众位朋友的帮助,实验已经成功!
我将文档上传,希望对大家有用!

CL编程实现自动定时备份库并上传.pdf


 xuguopeng 回复于:2006-08-04 15:02:22

支持,真是好同志啊~~~~


 snow_hongwei 回复于:2006-08-04 15:35:48

真是有心人啊!


 ibmas400 回复于:2006-08-04 15:45:19

感谢分享,,,


 pantierui 回复于:2006-08-04 15:58:54

谢谢了


 ewmiscc 回复于:2006-08-04 16:46:27

文档做得很漂亮!


 jance 回复于:2006-08-04 18:46:57

引用:原帖由 ewmiscc 于 2006-8-4 16:46 发表
文档做得很漂亮! 



谢谢!我的想法就是大家都将自己的经验拿出来分享一下、交流一下,这样对于像我这样的新人将会有很大的帮助!

我喜欢的一句话就是“人人为我,我为人人”。

share精神坚持到底……
:P


 胖有型 回复于:2006-08-07 09:42:41

引用:原帖由 jance 于 2006-8-3 11:57 发表
是啊,关键就是就是这个FTP的脚本这个头疼的问题,老大你有什么好的解决办法么?教我! 




脚本每次用C动态生成不就可以了吗?怎么惊动了这么多人,不明白。


 胖有型 回复于:2006-08-07 09:48:05

不过ADDJOBSCDE这个命令还是刚看到,回头试试去。


 jance 回复于:2006-08-07 09:57:47

引用:原帖由 胖有型 于 2006-8-7 09:42 发表



脚本每次用C动态生成不就可以了吗?怎么惊动了这么多人,不明白。 



能具体给我说说么?说实话,我对编程并不是很在行!谢谢!




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=803769
转载请注明作者名及原文出处



收藏本页到: