Ubuntu从服务器往本地拷文件,最直接高效的方式是使用scp命令,它基于SSH加密传输,一条命令即可完成下载。对于大文件或断点续传场景,rsync是更稳妥的选择,下文从基础命令到进阶场景,帮你把文件安全稳妥地“搬”回家。
Ubuntu云服务器拷贝文件到本地用什么命令
很多朋友第一次接触Linux服务器,往往卡在“怎么把文件弄下来”这一步,图形界面不可用时,命令行就是最可靠的通道,服务器与本地之间的文件传输,本质上是建立一个加密的数据管道,scp(Secure Copy)就是最常用的工具。
scp基础命令:一条命令搞定下载
scp的语法非常直观,核心逻辑是“从哪来,到哪去”,从服务器下载文件到本地,命令格式如下:
scp 用户名@服务器IP:服务器上的文件路径 本地保存路径
举例说明:
scp root@192.168.1.100:/home/user/data.zip .
这条命令会把IP为168.1.100的服务器上/home/user/data.zip文件,下载到当前目录(代表当前目录),执行后系统会提示输入密码,输对就完事。
如果需要下载整个目录,加一个-r参数:
scp -r root@192.168.1.100:/home/user/backup_folder .
-r代表递归复制,会连同文件夹里的所有内容一锅端。
调整端口和速度:应对非默认场景
服务器SSH端口默认是22,但不少云服务商出于安全考虑会改成别的端口,这时用-P参数指定端口:
scp -P 2222 root@192.168.1.100:/home/user/data.zip .
注意:scp指定端口用的是大写P,而ssh登录用的是小写p,别搞混。
如果感觉传输速度慢,可以用-l参数限制带宽占用,单位是Kbit/s:
scp -l 8192 root@192.168.1.100:/home/user/big_file.iso .
这里的8192代表8Mbps,避免传输大文件时把本地带宽全占满。
Ubuntu服务器和本地之间文件传输:rsync断点续传对比scp哪个更稳
当文件较大或网络不稳定时,scp的短板就暴露了:一旦传输中断,就得从头再来,这时候rsync的断点续传能力显得尤为可靠,行业共识认为,rsync在增量备份和大文件传输场景下,优势是压倒性的。
rsync断点续传实战操作
rsync的同步逻辑是“只传不一样的部分”,命令格式与scp类似:
rsync -avP root@192.168.1.100:/home/user/large_data.tar.gz .
参数拆解:
-a:归档模式,保留文件属性(权限、时间戳等)-v:显示详细传输日志-P:同时开启断点续传和进度显示
如果传输中断,重新执行同一条命令,rsync会自动比对文件差异,从中断处继续传输,不用重新开始。
断点续传的原理与适用场景
rsync之所以能续传,是因为它会在传输前生成一个临时校验文件,记录已传输的数据块位置,再次执行时,它会跳过已完成的部分,这个特性在传输虚拟机镜像、数据库备份等动辄几个GB的大文件时非常实用。
需不需要下载整个目录且要求保留文件属性?用rsync -avP一套带走:
rsync -avP root@192.168.1.100:/var/www/html ./web_backup
搭建Ubuntu服务器拷贝文件工具的实用指南
scp和rsync依赖SSH服务,也就是说不需要额外安装什么,但有些特殊场景,比如服务器没开SSH端口,或者在内网环境,就得另辟蹊径。
SFTP:图形化与命令行的折中方案
SFTP(SSH File Transfer Protocol)走的是SSH协议,但交互方式更像FTP,通过命令行连接:
sftp root@192.168.1.100
登录后进入SFTP交互界面,常用命令:
ls:查看服务器当前目录文件lcd:切换本地路径get 文件名:下载文件到本地get -r 目录名:递归下载整个目录bye:退出连接
对于不习惯纯命令行的用户,WinSCP 或 FileZilla 这类图形化SFTP工具也很香,左侧本地目录、右侧服务器目录,直接拖拽即可,虽然题主问的是Ubuntu本地,但凡是支持Linux的图形化SFTP客户端,操作逻辑大同小异。
Python临时HTTP服务:局域网内应急传输
两台机器在同一局域网内,临时传个文件,又不想配FTP,可以用Python起一个HTTP服务:
在服务器上执行:
python3 -m http.server 8080
然后在本地浏览器访问:
http://服务器IP:8080
页面会列出服务器当前目录下的所有文件,点击即可下载,这个方式适合临时用,安全性较弱,用完记得关掉。
服务器向本地传文件怎么解决权限与路径问题
权限和路径是踩坑重灾区,80%的传输失败都是这两项惹的祸。
确认文件路径:先看再下
连接服务器后,第一步是确认文件的绝对路径,用pwd查看当前目录,用ls -lh查看文件大小和权限。
pwd ls -lh /home/user/
如果提示No such file or directory,大概率是路径写错了,建议先定位到文件所在目录,用绝对路径执行命令。
解决权限不足:sudo与chown的选择
ssh登录用户如果没有文件读取权限,会报Permission denied,解决方案有两种:
一是切换用户,比如用root登录,或者用sudo -i切换到root再执行scp(但scp本身不支持直接sudo,需要先提权后再执行)。
二是修改文件权限,如果文件允许调整权限:
sudo chmod 644 /home/user/data.zip
这里644代表用户可读写,组和其他用户只读,传输结束后,建议把权限改回600或640,避免敏感文件暴露。
文件所有者问题也要注意,比如文件属于www-data用户,当前登录用户无权读取,可以先用sudo chown变更所有者:
sudo chown username:username /home/user/data.zip
本地路径与文件名冲突
下载到本地时,如果目标路径已存在同名文件,scp会直接覆盖,不提示,rsync的-P参数同样如此,安全起见,建议下载到带时间戳的新目录:
mkdir -p ~/backups/20260612 && scp root@192.168.1.100:/home/user/data.zip ~/backups/20260612/
Ubuntu系统文件传输常见问题速查
Q1:scp下载文件时提示“Permission denied”怎么办?
先检查SSH登录凭证是否正确,其次确认服务器文件对当前用户有读取权限,命令前加sudo不能解决scp的权限问题,正确的做法是登录到服务器(或先用sudo提权)修改被访问文件的权限,如果服务器启用了SELinux或AppArmor,也可能拦截访问,临时放行或调整策略即可。
Q2:服务器上的文件很大,传输中断后能否继续?
用scp不可以,它不支持断点续传,改用rsync -avP即可从断点继续,rsync的-P参数已经包含了--partial(保留部分传输文件)和--progress(显示进度)两项功能,传输大文件前,建议在终端复用器(如tmux或screen)中执行命令,彻底避开SSH断线困扰。
Q3:怎么从Windows本地把文件传到Ubuntu服务器?顺序反过来吗?
顺序反过来即可,在Windows命令提示符或PowerShell中,把scp的源和目标对调:
scp C:Usersmefile.txt root@192.168.1.100:/home/user/
Windows 10以上系统自带OpenSSH客户端,直接可用,这也是很多运维人员跨平台传输文件时的标准做法。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/682152.html





