代码之家  ›  专栏  ›  技术社区  ›  Defcon

从unix到大型机的LFTP ASCII错误

  •  0
  • Defcon  · 技术社区  · 7 年前

    我正在尝试使用lftp将文件从unix(UTF-8)ftp到大型机(gdg)。因此,下面的命令适用于较小的文件。大型机要求文件处于ascii模式。当文件变大时,我认为ftp被破坏了,lftp中的ascii选项不能正常工作。正在寻找一些解决方案。

    命令:

    lftp -c "open -u user,password -p 21 server.example.ORG; site LRECL=10200; put -a /home/user/example_2018-02-01-09-46-05.txt -o \'C00000.000000.0000(+1)\';bye"
    

    错误:

    put: cannot seek on data source
    

    问题:大型机空间不足。

    解决方案:基于以下答案。我减少了LRECL=750以节省空间,ascii模式能够再次工作。

    1 回复  |  直到 7 年前
        1
  •  5
  •   cschneid    3 年前

    z/OS和大多数(all?)之间的一个区别分布式OSs是指定数据集将占用多少空间的要求。可能存在一个默认设置,即“较小”的数据集不会超过,而“较大”的数据集会超过。

    尝试指定 SITE commands 分配更多空间。

    您可能需要与大型机存储管理员联系,查看是否有应指定为站点命令的数据报。数据包包括空间分配等内容。

    如果没有数据分类,通常情况下,人们对文件中存在的记录数有很好的了解,并且可以计算出需要多少块、轨迹或圆柱体。

    通常,您可以利用系统确定的块大小,其中z/OS为您计算最佳块大小。应在上使用的最大块大小 modern DASD 是27998字节,是半个磁道的大小。您的LRECL为10200。27998/10200为2.74,因此一个区块中可容纳2条记录,一条轨道上可容纳4条记录。那里浪费了相当多的空间。

    如果文件中有1000条记录,可以指定。。。

    pri=250 sec=25 tracks

    ...作为站点命令的一部分。这将在主要分配中提供1000条记录,并可能为slop提供15条次要分配。您不能保证获得二次分配,因此通常最好尝试指定足够大的主分配来容纳整个数据集。对于100000条记录的大型文件,可以指定。。。

    pri=1700 sec=170 cylinders

    ...因为一个圆柱体有15个轨迹。我来自一个相当大的数据集。

    虽然JCL有一个用于空间分配的RLSE参数,该参数表示释放(释放)未使用的主空间,但我在执行相同功能的站点命令中看不到任何内容。通常有人会为分配的空间付费,即使它是空的。一些商店安排了释放未使用但已分配空间的作业。所有这一切都意味着,只要在分配给你的位置上扔一堆空间,并称之为成功,因为FTP工作可能会让你不受任何付账人的欢迎。

    所有这些磁盘空间分配的东西都可以追溯到磁盘以今天的标准来说是难以置信的昂贵的时候。

    推荐文章