你的场景是:
- 服务器只能通过网页版远程访问(类似 Web IDE / 浏览器终端 / 云桌面)
- 文件传输功能不可用
- 但是剪贴板可以互通
- 想把整个项目源码拷贝到本地
这种情况下,核心思路是:把项目文件转换成一个可复制的纯文本流,然后通过剪贴板带出来。
下面给几个方案,从简单到稳妥。
方案1:tar 打包 + base64 + 剪贴板(推荐)
这是最通用的方法。
服务器端
进入项目目录:
bash
cd your_project
打包:
bash
tar czf project.tar.gz .
转换成文本:
bash
base64 project.tar.gz > project.tar.gz.b64
查看大小:
bash
ls -lh project.tar.gz.b64
然后:
bash
cat project.tar.gz.b64
复制全部输出。
本地
保存:
bash
vim project.tar.gz.b64
粘贴进去。
然后:
bash
base64 -d project.tar.gz.b64 > project.tar.gz
解压:
bash
mkdir project
tar xzf project.tar.gz -C project
恢复完整项目。
注意
如果项目很大,比如:
- 100MB
- 500MB
浏览器剪贴板可能撑不住。
可以切片:
服务器:
bash
split -b 5M project.tar.gz.b64 part_
得到:
part_aa
part_ab
part_ac
...
逐个复制。
本地:
bash
cat part_* > project.tar.gz.b64
再:
bash
base64 -d project.tar.gz.b64 > project.tar.gz
方案2:直接导出 git patch(代码项目最推荐)
如果项目是 git:
服务器:
bash
git status
确认。
然后:
bash
git bundle create project.bundle --all
转文本:
bash
base64 project.bundle > project.bundle.b64
复制。
本地:
bash
base64 -d project.bundle.b64 > project.bundle
恢复:
bash
git clone project.bundle myproject
优点:
- 保留 git 历史
- 分支
- commit
- 文件权限
比 tar 更适合代码。
方案3:只复制源码(排除编译文件)
如果项目很大,可以:
bash
tar czf source.tar.gz \
--exclude=build \
--exclude=.git \
--exclude='*.o' \
--exclude='*.so' \
.
然后 base64。
方案4:网页终端支持下载的话
很多 Web SSH(比如:
- Jupyter Terminal
- VSCode Server
- Open OnDemand
- 阿里云云助手
- 华为云 CloudShell
其实有隐藏下载接口。
可以尝试:
bash
python3 -m http.server 8000
然后浏览器访问:
http://server-ip:8000/project.tar.gz
如果网络策略允许,会比剪贴板快很多。
方案5:利用剪贴板传输小文件(最简单)
如果项目只有几十 KB:
服务器:
bash
find . -type f | xargs cat
不推荐。
因为:
- 文件名丢失
- 目录结构丢失
- 二进制损坏
如果有 git:
优先:
git bundle
↓
base64
↓
剪贴板
如果没有 git:
tar.gz
↓
split 5MB
↓
base64
↓
剪贴板
这是最可靠的。
另外,如果服务器网页终端支持鼠标复制,不要直接 cat 大文件,浏览器通常会卡死。建议:
bash
base64 project.tar.gz | split -b 2M - chunk_
然后:
bash
cat chunk_aa
cat chunk_ab
...
一块一块复制。