6
8月
2020
10:36

将大文件从智能手机传输到运行 Linux 的 PC

6 8月 2020 10:36

任务:通过 Wi-Fi 将照片从智能手机上传到运行 Linux 的个人计算机。

不幸的是,使用 ShareIt 程序传输文件的解决方案并不合适 - Linux 没有客户端,只有模拟。
由于开销成本,我没有考虑“云”选项(disk.yandex.ru、Google Drive、Mail.ru Cloud)——通过互联网传输到第三方服务器,然后从中下载。 蓝牙无法工作——速度太慢。 我选择了经过验证的选项,在个人计算机上安装 FTP 服务器。

程序:

  1. 在电脑上拿起它 FTP 服务器 protpd

sudo apt-get install proftpd

更改ProFTPd配置文件如下:

sudo nano /etc/proftpd.conf

Include /etc/proftpd/modules.conf
UseIPv6 off
IdentLookups off
ServerName "我的电脑名称"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"

DefaultRoot /home/vladimir/ftp # ftp 根目录名称

<Directory /home/vladimir/ftp> # FTP根目录
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>

<Directory> /home/vladimir/ftp/upload/> # 子目录“上传”——用于写入、读取、删除
Umask 022 022
AllowOverwrite on
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
AllowAll
</Limit>
</Directory>

AllowStoreRestart on

Port 21 # 标准端口,但您可以将其更改为您自己的端口。

<IfModule mod_dynmasq.c>
</IfModule>

MaxInstances 8
User proftpd
Group nogroup
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>

<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2

ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

<Limit LOGIN>
AllowUser vladimir2 # 已允许通过 FTP 登录
DenyALL # 其他人禁止入内。
</Limit>

UserAlias ftp vladimir2 # 使用用户名 vladimir2 通过 FTP 登录

Include /etc/proftpd/conf.d/

  • 还更改了shell文件,添加了nologin
    执行时 sudo nano /etc/shells 添加最后一行

    # /etc/shells: valid login shells
    /bin/sh
    /bin/dash
    /bin/bash
    /bin/rbash
    /usr/sbin/nologin

  • 修改ftp用户密码:

    sudo passwd ftp

  • 检查服务配置:

    sudo /etc/init.d/proftpd check-config

  • 启动proftpd服务:

    sudo /etc/init.d/proftpd start

  • 从客户端检查到服务器的连接是否正常:

    ftp my_IP-address

输入的用户名 文件传输协议”和 ftp 用户密码,进入目录 - 一切都按顺序进行。

  1. 2.安装在Android手机上 文件管理器 来自 Google Play 市场: 文件管理器
    另一个强大的FTP客户端-和FTP
  2. 两台设备 - PC 和智能手机都连接到同一个本地网络(通过 Wi-Fi 或有线 - 没关系)。
  3. 从智能手机连接 通过“文件管理器”-“远程服务”图标使用其IP地址(输入登录名和密码)连接到FTP服务器并将文件传输到计算机。

从 PC 而不是手机上传文件(添加 10/01/2021):

如果您在配置文件中启用限制,您将无法将文件从 PC 传输到智能手机。
FTP“上传”文件夹中读取和删除文件的限制如下:

<Directory /home/vladimir/ftp/upload/>

<Limit READ DELE>
DenyAll
</Limit>

起初我使用了这些指令,但后来我将它们从文件中删除了 proftpd.conf,因为经常需要从PC下载到手机。 现在可以通过 FTP 上传和下载。

解决访问问题 - 添加日期为 2021 年 10 月 4 日

通过 FTP 连接后,无法在 FTP 服务器上创建文件或目录

我在 Sparky Linux 操作系统(Debian 变体)上遇到了这个问题。

症状:
在 Debian PC 上,从智能手机连接到 FTP 服务器后,无法创建文件或目录来将文件从智能手机上传到 PC。 在这种情况下,FTP 客户端会在屏幕上写入错误“拒绝访问”或“找不到文件”。

主要错误及问题解决:
1.路径问题

  • 检查proftpd.conf文件中“public”或“upload”目录的路径是否与用户计算机上的真实路径和文件夹名称匹配(例如,/home/vladimir/ftp/upload 等)。

2.访问权限不正确(无写入或创建权限)

  • 在控制台中运行命令:

    sudo chmod -R 0775 /home/user/ftp

哪里 user- 用户帐户的工作文件夹的名称。 该命令意味着Owner 及其所属组可以读取、写入和执行ftp 目录中的文件。

3.分配目录的“所有者”
该问题出现在 Debian 操作系统上。

  • 在终端中运行命令:

    sudo chown -R ftp:users /home/user/ftp

其中 ftp 是 proftpd 运行的帐户,users 是“所有用户”组。

或者,为了加强权利限制:

sudo chown -R user:user /home/user/ftp

注意事项 :默认所有者 user:user
哪里 user- 您的用户名和组。

使用 Ubuntu 中的配置文件在 Debian 上运行 proftpd 时出现错误

您需要删除配置文件中的行(sudo nano /etc/proftpd.conf):
IdentLookups off

Linux Mint 21“Vanessa”中proftpd服务的问题及其解决方案 (08/23/2022)

当切换到 Linux Mint 21“Vanessa”时,出现了第一个问题 - 安装程序指向与 Mint 21 不兼容的“proftpd”包。
我被迫在使用“mint-update”更新之前删除它:

sudo apt-get remove proftpd

成功切换到LM 22后,我尝试安装该程序,但出现了第二个问题——proftpd安装错误:

fatal: LoadModule: error loading module 'mod_tls.c'

解决方案:

sudo nano /etc/proftpd/modules.conf

注释掉 许多模块。 我只留下了几块。 这是文件 modules.conf 禁用其中的行后:

ModulePath /usr/lib/proftpd
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
LoadModule mod_ctrls_admin.c
LoadModule mod_load.c
LoadModule mod_dynmasq.c
LoadModule mod_exec.c
LoadModule mod_ratio.c
LoadModule mod_site_misc.c
LoadModule mod_facl.c
LoadModule mod_unique_id.c
LoadModule mod_copy.c
LoadModule mod_deflate.c
LoadModule mod_ifversion.c
LoadModule mod_ifsession.c

然后,在主配置文件 prpftpd 中注释掉名为“IdentLookups”的行:

sudo nano /etc/proftpd/proftpd.conf

# If set on you can experience a longer connection delay in many cases.
#IdentLookups off

最后一步 - 从 proftpd 服务中删除了 systemd 掩码

sudo systemctl unmask proftpd.service

现在服务安装很顺利:

sudo apt-get install proftpd

启用并启动 proftpd 服务也不会出现“意外”:

systemctl enable proftpd.service
systemctl start proftpd.service
systemctl status proftpd.service

! 我使用journalctl -xeu命令跟踪了发生的错误:

journalctl -xeu proftpd.service

!!! 结论:使用 proftpd 将数据从智能手机传输到 PC 也可以在 Linux Mint 22 中运行。

检查 - 使用该程序从智能手机连接 “文件管理器+”- 远程 - 已完成通过 FTP 到已知用户名和密码的 PC 的 IP 地址。 目录已读取,文件已传输。


链接:



相关出版物