Use File Transfer Protocol

File Transfer Protocol (FTP) is a non-secure means of transferring files between networked computers using TCP (Transmission Control Protocol).

Before you begin

  • You must generate a unique FTP password in an upload account that has been configured to access the desired storage group. You must also know the name ("Id") of the upload account in which you set up the password.
  • Each NetStorage access method has an optimized upload domain. Use <Domain name prefix>.ftp.upload.akamai.com for FTP uploads.

FTP is not secure

We recommend that you avoid FTP as an access method. If you do choose to use it, it is important that you realize how non-secure it is.

  • During FTP transfer, content is unencrypted as it passes over the public Internet.
  • Anyone along the transfer pathway that can “sniff packets” can also see the upload account Id (Username) and FTP password used for authentication. This allows that “sniffer” full access to your content, to perform any and all of the operations available to that user in NetStorage. This includes deleting or changing content.

NetStorage offers some additional security measures for FTP (Password Rotation, Brute Force Attack Prevention and IP and Geo Access Control Lists), but even with them activated, they don’t offer the security available with a secure Access Method, such as SFTP, SecureCopy, Aspera Upload Acceleration or the CMShell.

All of the options above are configured in an upload account you use to access a desired storage group.

FTP specifications supported with NetStorage

  • Standard FTP - RFC 959
  • Simple File Transfer Protocol - RFC 913
  • FTP-TLS (FTPS) - RFC 4217 - FTP encapsulated inside a Transport Layer Security (TLS) session. This has been tested to work with specific FTP clients and NetStorage.

For additional information on FTP commands visit this URL: http://cr.yp.to/ftp.html

NetStorage FTP extensions

Additional FTP extensions are available for increased functionality.

Several FTP extensions are provided specifically for use with the site command in NetStorage, that allow you to perform various operations.

📘

Only the options discussed here are supported for use with NetStorage. All other FTP extensions are not supported.

You may need the “quote” command

Some FTP clients do not accept the site command as an interactive input. In those cases, the client usually accepts the quote command in some form, which allows the command to be sent. For example, via a Windows Command Prompt, you can use the quote command and accompany it with any supported site command and extension, enclosed in quotes:

ftp> quote site <extension> <additional parameters>
Extension Description
site az2z This command creates a Serve from Zip index for the next uploaded file.
site chkhash This command allows an FTP client to register an MD5 hash digest with the server so that the content-hash of the next uploaded file can be checked before the file is committed to the NetStorage area.
site chksize This command allows an FTP client to register an expected byte count with the server so the size of the next uploaded file can be checked against that count before being committed to NetStorage.
site copy This command allows an FTP client to copy a source file to a destination.
site settime This allows an FTP client to register a date-time setting to be applied to the next uploaded file as it is committed to NetStorage.
site shohash Use this command to display an MD5 hash of a specified file.
site symlink This command allows an FTP client to create a symbolic link to a target directory.
site extname With this command set to on, you can include the settime, chksize and chkhash extensions in a single upload (“ put”) command to issue them simultaneously.

The "site az2z" extension

This command creates a Serve from Zip index for the next uploaded file. If the next upload is not an archive file, an error is generated.

ftp> quote "site az2z"  
200 Az2z flag is set for your next upload

📘

Don't run this command along with the site chkhash [MD5Digest]. Doing so will cause an error, as the site az2z command adds information to the archive, which will cause the MD5 checksum to fail.

The "site chkhash" extension

This command allows an FTP client to register an MD5 hash digest with the server so that the content-hash of the next uploaded file can be checked before the file is committed to the NetStorage area.
If the hash values do not match, the transfer attempt returns an error. If there is some other error during transfer, the hash string is discarded and must be re-registered before retrying the upload.

  • chkhash: Hash mismatch detected
ftp> quote "site chkhash 0123ab456789"  
200 Hash check set to 0123ab456789
ftp> put \\files\\movie.mov,20171025121500,217048,  
abc123  
200 PORT command successful  
150 Opening BINARY mode data connection for movie.mov,20171025121500,  
217048,abc123

550 movie.mov,20171025121500,210000,20171025121500,217048,abc123: Hash mismatch detected

ftp: 217048 bytes sent in 0.32Seconds 689.04Kbytes/sec.
site az2z

📘

If the file in question is an archive file, do not run this command along with the site az2z command. Doing so will cause an error, as the site az2z command adds information to the archive, which will cause the MD5 checksum to fail.

The "site chksize" extension

This command allows an FTP client to register an expected byte count with the server so the size of the next uploaded file can be checked against that count before being committed to NetStorage.

If the counts do not match, the transfer attempt returns an error. If there is some other error during transfer, the byte count setting is discarded and must be re-registered before retrying the upload.

  • chksize: Size mismatch detected
ftp> quote "site chksize 400000"  
200 Size check set to 400000
ftp> put \\files\\movie.mov,20171025121500,  
210000  
,  
0123ab456789c012345d6ef7890g12h3  
200 PORT command successful  
150 Opening BINARY mode data connection for movie.mov,20171025121500,210000,0123ab456789c012345d6ef7890g12h3

550 movie.mov,20171025121500,210000,20171025121500,210000: Size mismatch detected (spec:210000 vs upld:217048)  

ftp: 217048 bytes sent in 0.32Seconds 689.04Kbytes/sec.
site chksize [bytecount]

The "site copy" extension

This command allows an FTP client to copy a source file [src] to a destination [dest], where [dest] can be a new file name or a directory.

ftp> quote "site copy file1 file2"  
200 file1 copied to file2
site copy [src] [dest]

The "site settime" extension

This allows an FTP client to register a date-time setting to be applied to the next uploaded file as it is committed to NetStorage. Normal FTP practice is to assign newly-uploaded files the current date-time, with some servers permitting a modtime operation after the fact.

Since NetStorage files are moved and replicated quickly after being committed, it is not possible for them to be modified after being uploaded.

ftp> quote "site settime 20171025120001"

200 Time value set to 20171025120001 (1508932801)
site settime [yyyymmddhhmmss]

📘

The settime setting is only good for a single upload. If an error occurs during transmission, the setting is discarded to avoid erroneously applying that value to a subsequent upload event.

The "site shohash" extension

Use this command to display an MD5 hash of a specified file. Include the complete path and name of the target file as the [path].

ftp> quote "site shohash \files\movie.mov"

200 movie.mov MD5=<hash>
site shohash [path]	

The "site symlink" extension

This command allows an FTP client to create a symbolic link, [symlink], to a target directory, [target].

ftp> quote "site symlink linkto-dir dir"

200 linkto-dir linked to dir
ftp> ls

200 PORT command successful.
150 Opening ASCII mode data connection for file list.
drwxr-xr-x 2 f1334 storage 0 Apr 29 22:30 dir
lrwxrwxrwx 1 f1334 storage 0 Apr 29 22:30 linkto-dir -> dir
226 Transfer complete.
site symlink [symlink] [target]

The "site extname" [on | off] extension

With this command set to on, you can include the settime, chksize and chkhash extensions in a single upload (“ put”) command to issue them simultaneously.

ftp> quote "site extname on"  
200 Name extensions scaning turned on

Once enabled, issue the put command and include these values in the call:

ftp> put \\files\\movie.mov movie.mov,20171025120001,217048,0123ab456789  
c012345d6ef7890g12h3

These usage rules apply:

  • Use the standard put command method to call out the desired file for upload. Include the full path and filename.
  • Reference the filename a second time. After you specify the full path and filename for the target upload, include a whitespace followed by a second instance of the target filename.
  • The values must follow a specific order, and they cannot be used standalone. The settime value must be first, followed by the chksize value and finally, the chkhash value. You cannot use one or two of these values, you must use all three. If you use them standalone, the file will upload, but will be renamed to include the orphaned value (for example, “movie.mov,<settime value>”).
  • Separate the repeat file name and each extension value with a comma. Ensure that there are no whitespaces between each.
  • Do not include “site” or the extension name. You only need to include the value to be applied for the settime, chksize and chkhash.
  • The values input for both the chksize and chkhash must be accurate. If either value is incorrect, an error will be displayed, and the upload will fail.

🚧

Even though the closing message reads as if the upload succeeded, if there is an error in either of these values, the upload will fail.