【问题标题】:Checking free space on FTP server检查 FTP 服务器上的可用空间
【发布时间】:2011-11-15 11:02:21
【问题描述】:

我正在运行一个构建脚本,其中三个可执行文件(每个 100mb)被上传到 FTP 服务器。

由于 FTP 服务器空间问题,第一次上传可能会失败,因此我们的构建过程会失败。这意味着我必须从服务器上释放一些空间并再次运行构建脚本,这是浪费时间。我想在上传 exe 之前检查 FTP 大小以确保有空间。如果有足够的空间,则上传,否则提示用户输入。

如何在 ant 脚本中检查 FTP 大小。

【问题讨论】:

    标签: java ant build ftp


    【解决方案1】:

    正如comments 中所讨论的,您可以编写一个 shell 脚本(假设 FTP 服务器是一个 linux 机器),如下所示:

    #!/bin/bash
    
    FTPDIR="/path/to/ftp/dir"
    echo `df -kl / | tail | awk '{print $4}'` > ${FTPDIR}/free_space.txt
    

    确保将path/to/ftp/dir 替换为您要下载的目录的实际路径。

    将该脚本添加到服务器的crontab (crontab -e) 并让它每小时运行一次 (0 * * * *) 左右。您可以下载free_space.txt文件,其中包含每小时更新的FTP服务器可用空间。

    【讨论】:

    • 我已经添加了这个扩展名?我们可以通过 ant 脚本运行它吗
    • 这应该在托管 FTP 的服务器上作为 shell 脚本 (.sh) 运行。你可以访问这个吗?我对 Ant 的了解为零,所以对此我无能为力。
    • 您对此有何解决方案?
    • 我可以在命令提示符下手动运行吗?因为我对服务器一无所知,也没有访问服务器的权限。
    • 当我在cmd sh ftp_space.sh 文件df: unrecognized option -l' 上运行时出现此错误 用法:df [-aikP] [-t fstype] [+all] [+inodes] [+type fstype ] [+kilobytes] [+portability] [path...] awk:未找到 ftp_space.sh:无法创建 ftp.amphorinc.com/Releases/free_space.txt:目录不存在`
    【解决方案2】:

    FTP 服务器通常不允许这样做,但您可以尝试以下命令:

    ftp> site df -kl
    

    但是,我建议您在 FTP 服务器上安排一个脚本,该脚本将当前可用空间(您可以从客户端读取)写入 TXT 文件。

    【讨论】:

    • 显示无效命令。您建议编写脚本以写入 txt 文件。所以请你给我一些线索,因为我不知道蚂蚁寻找空间的任务
    • 他说你可以编写一个脚本,它可以每小时在服务器上运行一次(例如),它将可用空间的值写入 FTP 目录中的文本文件。您可以下载并阅读此文件以评估可用空间并让您的脚本决定是否上传。是不是这个脚本的制作让你难以理解?
    • here
    【解决方案3】:

    我们的产品CompleteFTP 允许您添加自定义命令。可以从任何协议(FTP、SFTP、SSH、HTTP)调用自定义命令。在这种情况下,它将被称为 FTP SITE 命令。

    可以通过嵌入式 Javascript 或通过 .NET 程序集添加自定义命令。嵌入式 Javascript 更容易使用,因此我为您开发了一个脚本来执行此操作:

    function drivespace(driveLetter) {
        var driveName = driveLetter.toUpperCase() + ":\\";
        var drives = System.IO.DriveInfo.GetDrives();
        for (var i=0; i<drives.Length; i++) {
            var drive = drives[i];
            if (drive.Name == driveName)
                return drive.TotalFreeSpace;
        }
        throw "Could not find drive " + driveName;
    }
    

    请注意,即使它是 Javascript,它也会调用 .NET 类 System.IO.DriveInfo。该脚本直接输入到管理工具中,可立即使用。

    这是一个显示它被调用的示例命令行会话:

    Connected to MyServer.
    220-Complete FTP server
    220 CompleteFTP v 10.1.0
    530 Please login with USER and PASS
    User (MyServer:(none)): myuser
    331 Password required for myuser
    Password:
    230 User myuser logged in.
    ftp> SITE drivespace C
    200-170992414720
    200 SITE command successful.
    ftp> SITE drivespace g
    501-Could not find drive G:\
    501 SITE command failed.
    ftp>
    

    【讨论】:

      【解决方案4】:

      可能的解决方案是 ftp > df -h

      【讨论】:

      • 请告诉我客户端操作系统和目标操作系统。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2013-01-16
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多