m1 macOS下支持ftp协议的传输软件

macOS下支持ftp协议的软件

前言

环境

系统版本:macOS 11.5.2 20G95 arm64

CPU/GPU 型号:Apple M1

brew:Homebrew 3.2.11

lftp:4.9.2

为什么折腾支持ftp协议的传输软件?

出于课程原因,我需要从学校的ftp服务器(应该是windows服务器)下载课件。

但是使用macOS自带的finder.app登陆后,页面一片空白。其他同学反馈是有内容的,

之后使用lftp打开后,发现有内容,但是全是乱码,通过乱码恢复网站转换编码后发现,是由于GBK->utf-8转化导致

猜测是由于文件编码的问题导致无法显示确实因为这个:)

而由于系统自带的finder.app并没办法调整文件编码,遂开始折腾尝试第三方的传输软件

软件抉择

解决方案有很多,可根据以下实际情况对号入座。

原生支持m1的传输软件有很多,但免费且开源的几款软件只有CLI版本。例如:ncftplftp等。

这里推荐使用lftp

1、通过brew安装

1
$ brew install lftp

2、配置lftp以解决乱码问题

参考linux wiki

注意:具体的编码选择要和ftp服务器端采用的编码保持一致

一般linux系统上搭建的FTP server都是utf-8编码

设置GBK为lftp默认编码,编辑$HOME/.config/lftp/rc若不存在则新建一个, 加入以下语句:

1
2
set ftp:charset gbk
set file:charset utf8

transmit是公认的macOS下最好用的ftp传输软件,但是需要付费($45.00 USD),且需要双币信用卡:)

学生党实在缺钱的话,可以去某知名软件下载网站下载破解版……

但是破解版本只支持intel cpuApple M1尚未适配,所以需要Rosetta 2进行转译

第一步,通过brew下载最新版本的transmit

1
$ brew install transmit

第二步,打开transmit 5官网,填写好支付信息后直接购买

第三步,打开transmit,激活产品

just enjoy it :)

使用方法简记

Lftp

  • 连接ftp服务器

    1
    $ lftp -u student ftp://ftp.xxx.xxx.edu.cn

    然后输入密码登陆即可

    也可采取明文密码登录(不推荐)

    1
    $ lftp -u student,$PASSWORD ftp://xxx.xxx.xxx
  • 下载文件到本地指定目录

    1
    lftp student@ftp.ss.pku.edu.cn:~>get xxx.pdf -o ~/tempFolder/test.pdf
  • 查看更多使用技巧

    1
    $ man lftp

​ 也可参考使用LFTP进行SFTP文件上传与下载

后话

关于软件的查找,例如支持ftp协议的传输软件,可以通过搜寻关键词的方式进行

1
2
$ brew search ftp
$ brew search trans

结果分别如下:

1
2
3
4
==> Formulae
bbftp-client curlftpfs git-ftp lftp ncftp proftpd pure-ftpd swift-protobuf swiftplate tnftp tnftpd uftp vsftpd fcp fpp fop ntp stp
==> Casks
classicftp crushftp microsoft-powerpoint minecraftpe sipgate-softphone swift-publisher swiftpm-catalog
1
2
3
4
==> Formulae
gtranslator jmxtrans simutrans spirv-llvm-translator sql-translator transcrypt transfig translate-shell translate-toolkit transmission-cli xtrans trash travis thanos
==> Casks
android-file-transfer copytranslator mate-translate moefe-google-translate transcribe transfer transmission transmission-remote-gui transmit transnomino transocks transtype whoozle-android-file-transfer

之后可以通过brew info $软件名的方式查询软件具体信息