在CentOS服务器上,如何使用ftp命令行工具上传文件?

在服务器管理和日常运维工作中,将本地文件安全、高效地传输到远程CentOS服务器是一项基础且关键的任务,文件传输协议(FTP)及其安全变体SFTP(SSH File Transfer Protocol)是实现这一目标最常用的两种手段,本文将详细介绍在CentOS环境下,如何使用命令行工具进行FTP和SFTP上传,涵盖从基础连接到高级操作的全过程,旨在为系统管理员和开发者提供一份清晰、实用的操作指南。

在CentOS服务器上,如何使用ftp命令行工具上传文件?

传统FTP命令的使用

尽管由于安全性问题,传统FTP(明文传输)在新系统部署中已不那么推荐,但许多遗留系统和特定场景仍在使用它,了解其命令行操作依然具有实际意义。

连接与登录

您需要确保CentOS系统已安装FTP客户端。ftp客户端是默认安装的,如果没有,可以通过 yum install ftpdnf install ftp 进行安装。

连接到FTP服务器的命令格式如下:

ftp [ftp服务器地址或域名]

连接到一个IP地址为 168.1.100 的FTP服务器:

ftp 192.168.1.100

连接成功后,服务器会提示您输入用户名(Name)和密码(Password),正确输入后,您会看到一个 ftp> 提示符,表示已成功登录。

基本导航与文件上传

在上传文件前,您需要确认远程服务器的当前目录和本地工作目录。

  • pwd:查看远程服务器上的当前目录。
  • lsdir:列出远程当前目录下的文件和文件夹。
  • cd [远程目录名]:切换远程目录。
  • lcd [本地目录名]:切换本地目录(非常重要,确保您在本地找到了要上传的文件)。

准备就绪后,使用 put 命令上传单个文件:

put [本地文件名]

将本地的 report.txt 文件上传到远程服务器的当前目录:

put report.txt

如果需要上传多个文件,可以使用 mput 命令,并结合通配符:

mput [文件通配符]

上传所有 .log 文件:

mput *.log

执行 mput 时,系统会为每个文件询问是否确认上传(mput report.log?),如果不想逐一确认,可以先关闭交互模式:

在CentOS服务器上,如何使用ftp命令行工具上传文件?

prompt

再次执行 prompt 命令可以重新开启交互模式。

传输模式设置

FTP有两种传输模式:ASCII(文本模式)和Binary(二进制模式),对于文本文件,ASCII模式会进行换行符转换;而对于图片、压缩包、可执行文件等,必须使用Binary模式,否则会导致文件损坏,为了避免出错,建议在登录后直接设置为Binary模式:

binary

操作完成后,使用 byequit 命令退出FTP会话。


安全的SFTP命令的使用

SFTP是基于SSH协议的文件传输程序,所有数据(包括认证信息)都经过加密,安全性远高于FTP,是目前的主流选择,几乎所有现代CentOS系统都默认支持SFTP。

连接与登录

SFTP的连接方式与SSH类似:

sftp [用户名]@[sftp服务器地址或域名]

以用户 admin 的身份连接到服务器 168.1.100

sftp admin@192.168.1.100

系统会提示您输入 admin 用户的密码(或使用SSH密钥认证),成功后,您将看到 sftp> 提示符。

本地与远程命令的区别

SFTP的一个核心特点是明确区分本地操作和远程操作,这通过在命令前添加 l(local)来实现。

  • 远程操作pwd, ls, cd [远程目录]
  • 本地操作lpwd, lls, lcd [本地目录]

查看本地当前目录:

lpwd

切换到本地的 /home/user/documents 目录:

lcd /home/user/documents

文件与目录上传

SFTP中的上传命令同样是 put

在CentOS服务器上,如何使用ftp命令行工具上传文件?

put [本地文件名] [远程文件名可选]

上传本地的 backup.tar.gz 到远程当前目录:

put backup.tar.gz

SFTP的 put 命令也支持通配符,可以直接上传多个文件,无需 mputprompt 设置:

put *.sql

一个SFTP的显著优势是能够直接上传整个目录及其内容,使用 -r (recursive) 参数:

put -r [本地目录名]

将本地的 project_folder 整个上传到远程服务器:

put -r project_folder

操作完成后,使用 exitbye 退出SFTP会话。

命令对比与小编总结

为了更清晰地对比两种方式的常用命令,下表进行了小编总结:

功能 FTP 命令 SFTP 命令
连接服务器 ftp [host] sftp [user]@[host]
查看远程目录 pwd, ls pwd, ls
查看本地目录 !pwd, !ls (不常用) lpwd, lls
切换远程目录 cd [remote_dir] cd [remote_dir]
切换本地目录 lcd [local_dir] lcd [local_dir]
上传单个文件 put [local_file] put [local_file]
上传多个文件 mput [files] put [files]
上传整个目录 不支持(需打包或逐个上传) put -r [local_dir]
设置传输模式 binaryascii 自动处理,通常无需设置
退出 bye, quit exit, bye

自动化脚本中的FTP/SFTP

在自动化任务(如定时备份)中,交互式登录和输入密码是不可行的。

  • FTP自动化:可以使用 .netrc 文件存储凭据,或通过shell脚本中的“Here Document”提供输入。
  • SFTP自动化:更推荐使用批处理模式,将所有SFTP命令写在一个文件(如 sftp_commands.txt)中,然后使用 -b 选项执行:
    sftp -b sftp_commands.txt admin@192.168.1.100

    结合SSH密钥认证,可以实现完全无密码的自动化安全传输。


相关问答FAQs

使用FTP上传文件时,系统返回“550 Permission denied”错误,是什么原因?如何解决?
解答: 这个错误意味着您没有向目标目录写入文件的权限,这通常由两个原因导致:1)您登录的FTP用户本身对该目录没有写入权限,2)该目录在服务器文件系统上的权限设置不允许写入,您需要联系服务器管理员,确认FTP用户的权限,并检查目标目录的权限设置(使用 ls -ld /path/to/directory 命令查看),确保FTP用户所属组或用户本人拥有 w (write) 权限。

如何使用SFTP上传一个完整的目录,并保持其原有的目录结构?
解答: SFTP提供了一个非常方便的 -r (recursive) 参数来递归上传整个目录,您只需在 put 命令前加上 -r 即可,命令格式为 put -r [本地目录名],要将本地的 my_app 目录及其所有子目录和文件上传到服务器的当前目录,只需在SFTP会话中执行 put -r my_app,SFTP会自动在远程服务器上创建同名的目录结构。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 07:55
下一篇 2025-10-04 08:01

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信