SSH复制服务器文件路径,核心就两步:先用pwd拿到绝对路径,再用鼠标选中它复制。 如果你还想把服务器上的文件拷到本地,那就要在复制路径的基础上,配合scp或rsync命令,下面把这套流程拆开讲清楚,每一步都能直接上手操作。
复制路径之前,先想清楚你复制的是什么
很多人在终端里折腾半天,是因为没分清“当前目录路径”和“某个文件的完整路径”,这两种路径获取方式不同,复制后的用途也不同。
ssh怎么查看文件路径:pwd是首选命令
登录服务器后输入pwd,终端会输出一行以开头的绝对路径,比如/home/user/www,这就是当前所在目录的“门牌号”,如果你想复制某个具体文件的路径,比如index.html的完整路径,用readlink -f index.html就可以直接输出来。
绝对路径和相对路径,复制时选哪个
- 绝对路径以开头,从根目录开始写,在任何位置粘贴都能直接定位。
- 相对路径依赖当前所在目录,换一个目录就失效。
复制路径时一律复制绝对路径,原因很简单:粘贴给scp、rsync这类命令时,绝对路径不会因为你在哪个目录下执行而迷失方向。
登录时直接指定路径,省一步操作
如果你是为了快速进入服务器上某个常用目录,复制路径的动作可以省掉,SSH登录命令本身支持直接指定路径:
ssh user@host -t "cd /var/www/html && bash --login"
这条命令的意思是:登录成功后直接进入/var/www/html目录,把目录路径换成你复制好的内容,下次连上去就在目标位置了。
终端里选中即复制,mac和Windows差异要分清
SSH连接工具多种多样,复制粘贴的快捷键也略有不同,但核心逻辑一致:先选中,再复制,最后粘贴到输入框。
mac终端ssh复制粘贴路径
macOS自带的终端(Terminal)默认选中文本就完成复制,不需要额外按快捷键,复制路径后,点进输入框按Command+V就能粘贴,如果你用的是iTerm2,默认是Command+C复制,Command+V粘贴,也可以手动设置成选中即复制。
Windows Terminal和PowerShell的复制粘贴
Windows Terminal里的复制是选中文本后按Ctrl+Shift+C,粘贴是Ctrl+Shift+V,老一代的cmd窗口虽然还在用,但体验差不少,右键是粘贴,选中文本后按回车是复制,很容易误操作,想省心就直接用Windows Terminal。
手机SSH工具怎么复制路径
手机端SSH(比如Termius、JuiceSSH)通常长按屏幕出现选择手柄,拖动手柄选中路径后点复制,手机上操作路径比较考验手指精度,建议在服务器端用小技巧绕开这个问题:执行pwd | clip不行,但可以执行pwd后直接用工具自带的“复制上一条命令输出”功能。
复制路径后,如何用scp远程复制文件命令把文件拉回本地
复制路径本身不是目的,把文件从服务器下载下来才是大多数人的真实需求。scp是SSH自带的安全复制命令,语法简单直接。
下载单个文件的标准写法
scp username@server_ip:/home/user/index.html /Users/me/Desktop/
冒号后面的部分就是刚才在服务器上复制出来的路径,直接粘贴进去,命令末尾的/Users/me/Desktop/是本地保存目录,按你自己的情况替换。
复制整个目录要加-r,末尾斜杠有讲究
scp -r username@server_ip:/home/user/www /本地目录
- 源路径末尾不加,会连
www目录本身一起复制到本地。 - 源路径末尾加,只复制
www目录里面的内容,不会多出一层目录。
这个细节不少人栽过跟头,复制完发现本地多了一层文件夹,然后到处找原因。
rsync比scp更适合大目录
目录特别大、文件特别多时,scp不支持断点续传,中途断了就要从头再来。rsync支持断点续传,还能只同步差异文件,速度优势明显:
rsync -avz username@server_ip:/home/user/www /本地目录
从实际体验来看,大多数人用scp处理小文件就够了,但中大型目录传输推荐用rsync,省时省力。
路径里有空格,粘贴后记得加引号
如果服务器上某个目录名带空格(比如/home/user/My Documents),直接粘贴路径会报错,把整个路径用双引号包起来:
scp "username@server_ip:/home/user/My Documents" /本地目录
路径粘贴的常见事故:换行符、波浪号和权限
复制路径听着简单,实际操作中容易出三个问题。
粘贴路径后自动执行了命令
很多终端工具复制时会连带把末尾的换行符复制进去,一粘贴就被当成回车键,命令还没输完就执行了,解决方法:粘贴前先看输入框里有没有多出一行,或者粘贴后按Ctrl+C取消,再重新粘贴一次。
波浪号~不能直接用在scp路径里
在服务器终端里,cd ~/www能直接跳到用户目录下的www文件夹,但scp命令里写username@host:~/www,部分老版本不支持解析这个波浪号,复制路径时一定要复制完整的/home/用户名/...或者/root/...,不要图省事用。
没有权限读目标文件
路径正确、命令正确,但scp提示Permission denied,说明当前登录用户没有读取那个文件或目录的权限,这时候需要切换一个有权限的用户,或者用sudo配合rsync的特殊参数处理(具体命令因系统而异,这里不做展开)。
常见问题:复制路径、粘贴文件还能这么折腾
在服务器上复制的路径,粘贴到本地为什么是乱码
乱码一般不是路径本身的问题,而是终端编码不对,服务器和本地终端都设置成UTF-8编码,绝大多数乱码都能解决,尤其Windows下老版本cmd默认GBK编码,换成Windows Terminal后症状会消失。
文件名太长,scp命令里不好拼
先用cd进入文件所在目录,然后直接执行scp 文件名 username@本地IP:路径,冒号后面的本地路径按Windows/macOS格式写,这样就不用在一行里写特别长的完整路径了。
如何把本地文件路径传到服务器
反过来操作,scp也支持本地到服务器的方向:
scp /本地路径/文件 username@server_ip:/服务器目标路径
这个时候,服务器目标路径就是你先复制好的那个路径。
SSH复制路径这件事,说到底就是先获取绝对路径,再选中复制,最后按场景拼进命令,无论你是要在终端里cd过去,还是要用scp把文件拉到本地,这个顺序都不变,路径本身不会撒谎,复制的时候多看一眼开头是不是,粘贴的时候留意有没有带换行符,基本就能避开大多数坑,全文提到的命令都是Linux服务器和macOS/Windows通用操作,直接复制到自己的终端里改个路径就能跑。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/794073.html


