Cisco "copy startup-config tftp" results in a 0 byte file on the server?

I'm pulling my hair out figuring this out. My startup-config is good, I can view it with a show command. I'm trying to copy it to a tftp server:

asa5505# copy startup-config tftp

Address or name of remote host []? ipaddress

Destination filename [startup-config]? t
!!
%Error writing tftp://ipaddress/t (Timed out attempting to connect)

On my TFTP server (SolarWinds), I get the following:

binary, PUT. Started file name: C:\TFTP-Root\t
binary, PUT. File Exists, C:\TFTP-Root\t
binary, PUT. Deleting Existing File.
binary, PUT. Interrupted by client, cause: The process cannot access the file 'C:\TFTP-Root\t' because it is being used by another process

I've used tftpd32 with same results. I've tried different servers, even one on the same network as the asa ... same results. It'll create a 0 byte file and never do the dump. What's going on? Everything is working normally except for this.


Solution 1:

The zero byte indicates that cisco sent the WRQ command to tftp port (69). The file is created at this step. The problem happens after this point.

The server acks from a different port to the cisco client tftp port. Cisco, then, sends the data to this different port.

The problem might be either with the ack not reaching or being rejected by cisco or the server rejecting the first data packet from cisco. The first problem is normally a firewall/acl issue while the second one could also be MTU mismatching. If you set jumbo frames on, cisco will use that for its outgoing traffic, including tftp.

Solution 2:

Looks like the answer is right in the question:

binary, PUT. Interrupted by client, cause: The process cannot access the file 'C:\TFTP-Root\t' because it is being used by another process

It's a problem with the TFTP server. Fix it there.

Solution 3:

not experienced with Windows TFTP servers, but with tftpd-hpa on Debian and the built in TFTP server on Mac OS X, I found I had to create the file first, make it world writable and then push the tftp file from IOS.

Then it worked.