Skip to content
Advertisement

How to confirm SFTP file delivery?

I am sending a file using SFTP and public key for non-root user, looks like the file is sent, but I cant find it on the target folder, maybe due to permission.

sftp> ls
sftp> put /tmp/testx
Uploading /tmp/testx to /folder1/target_folder
/tmp/testx                                 100%    5     0.0KB/s   00:01
sftp> get testx
Couldn't stat remote file: No such file or directory
File "/folder1/target_folder/testx" not found.
sftp> ls
sftp>

here is the -vvv :

debug3: SSH_FXP_REALPATH . -> /folder1
debug3: Looking up /tmp/file_to_send
debug3: Sent message sender_host 4 T:17 I:2
debug3: Wrote 80 bytes for a total of 2653
debug3: Received stat reply T:105 I:2
debug3: Sent message SSH2_FXP_OPEN I:3 P:/folder1/target_directory/file_to_send
debug3: Wrote 112 bytes for a total of 2765
debug3: Sent message SSH2_FXP_WRITE I:4 O:0 S:6206
debug3: Wrote 6288 bytes for a total of 9053
debug3: SSH2_FXP_STATUS 0

target directory

 drw-rw-rw-    1  0   0       target_directory

How can I make sure the file is delivered, without server access ?

Advertisement

Answer

All you can do is to check that there are no errors, when uploading the file. That’s all information the SFTP server gives you.

With command-line OpenSSH sftp client, you can check its exit code (you need to use the -b switch).

echo "put file.txt" | sftp -b - user@host
if [ $? -eq 0 ]
then
    echo "File uploaded"
else
    echo "File NOT uploaded"
fi

See also How to perform checksums during a SFTP file transfer for data integrity?


It’s perfectly possible that the SFTP server does not allow you to download a file that you have just uploaded.

There are two common reasons for such behavior:

  • Public “upload” directory. This is to prevent you from downloading other user’s files.
  • There’s some process that immediately picks uploaded file for some processing.
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement