使用 lftp 通过 FTP 协议传输文件
使用场景
我自己是使用 mac 进行开发的,然后自己家的路由器挂载了 NAS 。因为 mac 不支持 NTFS 格式的硬盘,如果使用 windows 直接插入 usb 就可以传到硬盘。
但是我想使用 FTP 协议通过 wifi 或者 网线进行传输呢?
那么最好的办法就是使用 lftp 了,有很多类似 lftp 的工具,这篇文章主要介绍 lftp
lftp 是什么?
lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。lftp的界面非常像一 个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。 它还有书签、排队、镜像、断点续传、多进程下载等功能。
lftp 的常用命令
lftp [email protected]:port
#类似 SSH 的登录方式lftp 192.168.1.253:/> get -c ls-lR.txt
#下载单个文件,断点续传用-c参数lftp 192.168.1.253:/> mget *.txt
#下载多个文件lftp 192.168.1.253:/> pget -n 4 ls-lR.txt
#多线程下载ls
#显示远端文件列表(!ls 显示本地文件列表)cd
#切换远端目录(lcd 切换本地目录)get
#下载远端文件mget
#下载远端文件(可以用通配符也就是 *)pget
#使用多个线程来下载远端文件, 预设为五个mirror
#下载/上传(mirror -R)/同步 整个目录put
#上传文件mput
#上传多个文件(支持通配符)mv
#移动远端文件(远端文件改名)rm
#删除远端文件。 参数-r,递归删除文件夹mrm
#删除多个远端文件(支持通配符)mkdir
#建立远端目录rmdir
#删除远端目录pwd
#显示目前远端所在目录(lpwd 显示本地目录)du
#计算远端目录的大小set net:limit-rate 10000,10000
#限制上传下载各为10KB/sset ftp:charset gbk
#设置远程ftp site用gbk编码!
#执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)lcd
#切换本地目录lpwd
#显示本地目录alias
#定义别名bookmark
#设定书签。exit
#退出ftp
缺省情况下,按 Ctrl+z,正在执行的任务将转为后台执行,也可以 在命令行末尾加&符号使任务在后台执行。用 jobs 命令可以查看所 有的后台进程。
用 queue 命令可以排队新的任务。如果退出lftp时还有任务在后台执行,lftp将转为后台执行。
解决乱码
在用 lftp 访问国内一些 ftp 服务器时,往往看到的中文是乱码这是由于服务器和本地编码不一致造成的。我们只要在主目录下新建一个文件~/.lftprc 或者 ~/.lftp/rc
并在其中加入以下内容
debug 3
set ftp:charset GBK
set file:charset UTF-8
#set ftp:passtive-mode no
#alias utf8 " set ftp:charset UTF-8"
#alias gbk " set ftp:charset GBK"
其他客户端
- kftpgrabber KDE 下 ftp 客户端,支持编码选择。对中文支持较好
- gftp gnome下 ftp 客户端,目前对中文支持尚不太好,受抱怨颇多。
- fireftp firefox 的 ftp 客户端插件,新版对中文支持较好。
- FileZilla 对中文支持较好
- CrossFTP 基于 Java 的稳定 ftp 客户端和同步工具。优良的中文/Unicode 支持。