I am running a build script in which three executable files (100mb each) are uploaded to an FTP server.
The first upload can fail due to an FTP server space problem so our build process fails. This means I have to free some space from the server and run the build script again which is waste of time. I'd like to check the FTP size before uploading the exe to make sure space is there. If sufficient space is there then upload otherwise prompt user for input.
How can I check the FTP size in an ant script.
Our product, CompleteFTP, allows you to add custom commands. Custom commands can be called from any protocol (FTP, SFTP, SSH, HTTP). In this case it'd be called as an FTP SITE command.
Custom commands can be added via embedded Javascript or via a .NET assembly. Embedded Javascript is a lot easier to work with, so I've developed a script for you that does this:
Notice that, even though it's Javascript, it's calling into the .NET class, System.IO.DriveInfo. The script is entered directly into the administration tool and is available immediately.
Here's a sample command-line session that shows it being called:
FTP servers usually do not allow this, but you can try the command:
However, I suggest you to schedule a script on the FTP server which writes to a TXT file the current free space (which in turn you may read from your client).
Possible solution is ftp > df -h
As discussed in the comments, you can write a shell script (assuming the FTP server is a linux box) along the lines of:
Make sure you replace
path/to/ftp/dir
with the actual path to the directory you will be downloading from.Add that script to the server's crontab (
crontab -e
) and let it run every hour (0 * * * *
) or so. You can download thefree_space.txt
file which contains the hourly updated free space of the FTP server.