Single Line sftp from Terminal

前端 未结 6 1443
渐次进展
渐次进展 2020-12-22 20:59

Several times throughout the day, I may be running a test where I need to look through a log file on a remote server. I\'ve gotten used to using my terminal to sftp

6条回答
  •  旧巷少年郎
    2020-12-22 21:31

    Update Sep 2017 - tl;dr

    Download a single file from a remote ftp server to your machine:

    sftp {user}@{host}:{remoteFileName} {localFileName}
    

    Upload a single file from your machine to a remote ftp server:

    sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
    

    Original answer:

    Ok, so I feel a little dumb. But I figured it out. I almost had it at the top with:

    sftp user@host remoteFile localFile
    

    The only documentation shown in the terminal is this:

    sftp [user@]host[:file ...]
    sftp [user@]host[:dir[/]]
    

    However, I came across this site which shows the following under the synopsis:

    sftp [-vC1 ] [-b batchfile ] [-o ssh_option ] [-s subsystem | sftp_server ] [-B buffer_size ] [-F ssh_config ] [-P sftp_server path ] [-R num_requests ] [-S program ] host 
    sftp [[user@]host[:file [file]]] 
    sftp [[user@]host[:dir[/]]]
    

    So the simple answer is you just do : after your user and host then the remote file and local filename. Incredibly simple!

    Single line, sftp copy remote file:

    sftp username@hostname:remoteFileName localFileName
    sftp kyle@kylesserver:/tmp/myLogFile.log /tmp/fileNameToUseLocally.log
    

    Update Feb 2016

    In case anyone is looking for the command to do the reverse of this and push a file from your local computer to a remote server in one single line sftp command, user @Thariama below posted the solution to accomplish that. Hat tip to them for the extra code.

    sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
    

提交回复
热议问题