使用scp通过符号链接下载文件时,能否保存为原文件名?
如何让SCP下载符号链接
release时保存为原文件名 当然可以!我给你几个实用的方法,轻松解决这个问题:
方法一:分步获取原文件名再下载
这个方法逻辑清晰,先拿到符号链接指向的真实文件信息,再用SCP精准下载:
# 1. 通过SSH获取远程真实文件的绝对路径 REMOTE_FILE_PATH=$(ssh 你的用户名@服务器地址 'readlink -f /服务器上release的路径/release') # 2. 从绝对路径里提取原文件名 ORIGINAL_FILENAME=$(basename "$REMOTE_FILE_PATH") # 3. 用SCP下载并指定本地保存为原文件名 scp 你的用户名@服务器地址:"$REMOTE_FILE_PATH" "./$ORIGINAL_FILENAME"
解释一下:readlink -f会彻底解析符号链接,返回它指向的真实文件的绝对路径;basename则从这个路径里剥离出最后的文件名,这样下载后的文件就会用原文件的名字啦。
方法二:一行简洁命令
如果不想分步骤,可以把命令合并成一行,一次性完成操作:
scp 你的用户名@服务器地址:"$(ssh 你的用户名@服务器地址 'readlink -f /服务器上release的路径/release')" ./
这个命令把获取真实路径的操作嵌套进SCP里,SCP会自动识别远程真实文件的名字,并以此作为本地保存的文件名。
方法三:手动指定文件名(已知原文件名时用)
如果你已经清楚release指向的原文件名(比如app-v1.3.0.zip),可以直接在SCP命令里指定本地文件名,一步到位:
scp 你的用户名@服务器地址:/服务器上release的路径/release ./app-v1.3.0.zip
这种方法最直接,但需要你提前知道原文件名,适合版本命名规律固定的场景。
内容的提问来源于stack exchange,提问作者harperville
相关产品推荐
相关产品推荐

