在Linux系统中传输文件夹是日常运维和开发中的常见需求,无论是从本地上传到远程服务器,还是在不同Linux系统间共享数据,都需要选择合适的方法,以下是几种主流的文件夹传输方式及详细操作步骤,帮助用户高效完成文件传输任务。
使用SCP(Secure Copy Protocol)传输
SCP是基于SSH的安全文件传输协议,适合在Linux与Linux、Linux与Windows(通过WSL或PuTTY)之间传输文件夹,且传输过程加密,安全性较高。
操作步骤:
-
基本命令格式:
scp -r /本地文件夹路径 用户名@远程服务器IP:/远程目标路径
-r
:递归复制整个目录,必须参数;用户名@远程服务器IP
:远程服务器的登录用户和IP地址;/远程目标路径
:文件夹在远程服务器的存放位置。
-
示例:
将本地/home/user/docs
文件夹传输到远程服务器168.1.100
的/opt
目录下,远程用户为root
:scp -r /home/user/docs root@192.168.1.100:/opt
-
注意事项:
- 需确保远程服务器已开启SSH服务(默认22端口);
- 若修改过SSH端口,需用
-P
参数指定,如-P 2222
; - 传输大文件夹时,可通过
-C
参数开启压缩,提升速度:scp -rC /本地路径 用户@IP:/远程路径
。
使用SFTP(SSH File Transfer Protocol)传输
SFTP是SSH的一部分,提供交互式文件传输功能,支持上传、下载、删除等操作,适合需要频繁管理文件的场景。
操作步骤:
- 连接远程服务器:
sftp 用户名@远程服务器IP
- 上传文件夹:
连接成功后,使用put
命令上传,-r
参数表示递归:put -r /本地文件夹路径 /远程目标路径
- 示例:
上传本地/home/user/projects
到远程服务/tmp
目录:put -r /home/user/projects /tmp
- 图形化工具:
可使用FileZilla、WinSCP(Windows)等图形化客户端,输入服务器IP、用户名、密码后,直接拖拽文件夹传输,适合不熟悉命令行的用户。
使用rsync(Remote Sync)传输
rsync是远程同步工具,支持增量传输(仅同步变化的部分),适合大文件夹或频繁同步的场景,效率较高。
操作步骤:
-
基本命令格式:
rsync -avz /本地文件夹路径 用户名@远程服务器IP:/远程目标路径
-a
:归档模式,保留文件权限、时间戳等属性;-v
:显示传输过程;-z
:压缩传输数据,减少网络流量。
-
示例:
同步本地/home/user/data
到远程服务器/backup
目录:rsync -avz /home/user/data root@192.168.1.100:/backup
-
本地同步:
若在同一台Linux系统内传输文件夹,可直接省略用户和IP:rsync -avz /源路径 /目标路径
搭建FTP/SFTP服务器传输
若需要长期、多用户共享文件夹,可搭建FTP(如vsftpd)或SFTP服务器。
以vsftpd(FTP)为例:
- 安装服务:
sudo apt install vsftpd # Debian/Ubuntu sudo yum install vsftpd # CentOS/RHEL
- 配置共享目录:
编辑/etc/vsftpd.conf
,开启write_enable=YES
,设置chroot_local_user=YES
(限制用户访问主目录),并指定共享目录(如local_root=/var/ftp/share
)。 - 创建用户并授权:
sudo useradd -d /var/ftp/share ftpuser # 创建用户并指定主目录 sudo passwd ftpuser # 设置密码
- 启动服务:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
- 客户端连接:
使用FileZilla等工具,输入服务器IP、用户名、密码,传输文件夹。
使用共享文件夹(如Samba)传输
若需要在Windows和Linux之间传输文件夹,可搭建Samba(SMB/CIFS协议)服务。
操作步骤:
- 安装Samba:
sudo apt install samba # Debian/Ubuntu
- 配置共享:
编辑/etc/samba/smb.conf
,添加共享目录配置:[shared] path = /home/user/share writable = yes guest ok = no valid users = user1
- 创建Samba用户:
sudo smbpasswd -a user1 # 设置Samba密码
- 启动服务:
sudo systemctl start smbd
- Windows访问:
在Windows文件资源管理器地址栏输入\Linux服务器IPshared
,输入用户名密码后即可传输文件夹。
不同传输方式对比
方法 | 适用场景 | 优点 | 缺点 | 常用命令/工具 |
---|---|---|---|---|
SCP | 快速、安全的小文件夹传输 | 加密传输,简单易用 | 无增量传输,大文件效率低 | scp -r |
SFTP | 需要交互式管理文件 | 支持多操作,安全性高 | 需要SSH支持,速度一般 | sftp 、FileZilla |
rsync | 大文件夹、增量同步 | 高效,支持保留文件属性 | 需要两端安装rsync | rsync -avz |
FTP/SFTP | 多用户长期共享 | 灵活配置用户权限 | 需搭建服务,配置较复杂 | vsftpd、openssh-server |
Samba | Windows与Linux互传 | Windows原生支持 | 仅适合局域网,安全性需配置 | smb.conf 、Windows网络 |
相关问答FAQs
Q1:传输大文件夹时速度很慢,如何优化?
A:可通过以下方式优化:① 使用rsync -avz
开启压缩和增量传输,减少数据量;② 检查网络带宽,避免其他占用带宽的应用;③ 调整SSH或rsync的缓冲区大小(如ssh -C -c arcfour
使用弱加密提升速度);④ 若本地与服务器在同一内网,优先使用有线连接而非Wi-Fi。
Q2:如何确保传输后文件夹权限与原文件夹一致?
A:不同工具需使用不同参数保留权限:① SCP默认保留权限,无需额外参数;② rsync使用-a
参数(包含-p
保留权限);③ SFTP传输时,若权限异常,可在远程服务器用chmod -R 755 /目标路径
手动调整;④ 搭建FTP/Samba服务时,需在配置文件中设置chmod=777
或正确分配用户权限。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38616.html