树莓派学习之SFTP管理文件

当需要向树莓派发送文件时,可使用SFTP上传下载文件。下面介绍如何使用SFTP向树莓派发送下载文件。

基础知识

SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。

SFTP 为 SSH的其中一部分,是一种传输文件至服务器的安全方式。在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。

SFTP传输使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

SFTP客户端程序

在Windows平台,常用的SFTP客户端程序有:

  • FileZilla
  • WinSCP
  • Xftp
  • Core FTP

在Linux平台,可直接使用sftp命令进行连接服务器。

基本操作

下面介绍在Debian平台使用sftp命令连接树莓派,在此之前应配置树莓派开启ssh服务

  1. 建立连接

使用如下命令连接树莓派:

1
sftp pi@192.168.0.103
  1. 查看帮助

通过help查看在sftp连接下能使用的命令。从帮助中可知,在命令前加前缀“l”或者“!”即可在本地操作系统shell执行命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afPpRr] remote [local] Download file
reget [-fPpRr] remote [local] Resume download file
reput [-fPpRr] [local] remote Resume upload file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afPpRr] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
rename oldpath newpath Rename remote file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
  1. 下载远程文件到本地主机
    使用get命令下载远程文件到本地主机:

    1
    2
    3
    sftp> get README.TXT 
    Fetching /home/pi/wiringPi/README.TXT to README.TXT
    /home/pi/wiringPi/README.TXT 100% 606 39.1KB/s 00:00

    get命令还有一些有用参数,如递归选项“ -r ”来递归的复制一个文件夹里面的内容,“ -P ”或者“ -p ”参数来告诉 SFTP 保持文件的权限访问位的设置和访问时间。

  2. 上传本地文件到远程主机
    使用“ put ”命令将文件上传到远程主机:

    1
    2
    3
    sftp> put README.TXT 
    Uploading README.TXT to /home/pi/README.TXT
    README.TXT 100% 606 33.6KB/s 00:00

    ” put “具有类似“ get ”的参数。例如,递归选项“ -r ”可以上传整个文件夹。

参考文献

  1. 华华. 手把手教你使用 SFTP 安全地传输文件.2015-12-5.