Windows 通过 SSH 下载服务器目录并完整上传到指定服务器目录(scp / rsync 实战教程)

场景:

需要把 服务器上的目录下载到 Windows 本地 ,确认无误后,再完整上传到另一台服务器的指定目录

常见于:数据迁移、备份恢复等场景。


一、整体流程说明(先看这个很重要)

完整流程如下:

复制代码
服务器 A
   ↓(SSH)
Windows 本地
   ↓(SSH)
服务器 B(目标目录)

对应步骤:

  1. 服务器 A → Windows:下载目录
  2. Windows:确认文件完整
  3. Windows → 服务器 B:上传到指定目录
  4. 服务器 B:校验目录 & 修正权限

二、环境准备

Windows 端

  • Windows 10 / 11(自带 OpenSSH)
  • 或安装 Git Bash / WSL(推荐 rsync)

服务器端

  • SSH 可连接
  • 有写入目标目录的权限
  • (rsync 方案)服务器已安装 rsync

三、服务器目录下载到 Windows

✅ 方案一:scp(最简单,适合一次性)

下载命令
powershell 复制代码
scp -r user@服务器A:/remote/source_dir C:\Users\5277\Downloads\source_dir\
示例
powershell 复制代码
scp -r root@192.168.1.10:/opt/project C:\Users\5277\Downloads\project\

下载完成后,本地目录结构:

复制代码
C:\Users\5277\Downloads\project

✅ 方案二:rsync(推荐,支持断点续传)

适合:目录大、重要数据、网络不稳定

bash 复制代码
rsync -avz --progress \
root@192.168.1.10:/opt/project/ \
/mnt/c/Users/5277/Downloads/project/

参数说明:

  • -a:保持权限、时间
  • -v:显示过程
  • -z:压缩传输
  • --progress:实时进度

⚠️ 注意路径末尾 /,否则会多嵌套一层目录。


四、Windows 本地校验文件完整性(强烈建议)

1️⃣ 查看文件是否存在

bash 复制代码
ls -lh C:\Users\5277\Downloads\project

2️⃣ 文件数量校验(简单但有效)

bash 复制代码
find C:\Users\5277\Downloads\project | wc -l

五、Windows 上传目录到目标服务器

目标服务器目录

复制代码
/home/project

✅ 使用 scp 上传(最省事)

powershell 复制代码
scp -r "C:\Users\5277\Downloads\project" root@服务器B:/home/project

上传后结构为:

复制代码
/home/project/project
如果只想上传 project 内部内容:
powershell 复制代码
scp -r "C:\Users\5277\Downloads\project\*" root@服务器B:/home/project/

✅ 使用 rsync 上传(生产环境推荐)

bash 复制代码
rsync -avz --progress /mnt/c/Users/5277/Downloads/project/ root@192.168.1.20:/home/project/

优势:

  • 支持断点续传
  • 可重复执行
  • 不会重复传输已存在文件

六、上传完成后的关键检查(很多人翻车在这)

1️⃣ 查看目录

bash 复制代码
ls -lh /home/project

2️⃣ 修正权限

bash 复制代码
chown -R dk_project:dk_project /home/project

chmod -R 755 /home/project

⚠️ 如果是 Docker:

bash 复制代码
docker inspect zfile | grep Mounts -A 10

确认宿主机目录是否正确挂载。


七、常见问题与坑位总结

❌ scp 中断?

  • 只能重来
  • 重要数据请用 rsync

❌ 多套一层目录?

  • 路径末尾 / 用错了

八、推荐实践总结(实话)

场景 推荐方案
小目录、临时传输 scp
生产数据 / 大目录 rsync
新手、可视化 WinSCP
Docker 数据目录 rsync + 权限校验

九、完整命令模板(可直接复用)

bash 复制代码
# 服务器 A → Windows
rsync -avz --progress root@服务器A:/源目录/ /mnt/c/tmp/source/

# Windows → 服务器 B
rsync -avz --progress /mnt/c/tmp/source/ root@服务器B:/home/project/

十、结语

这类 "服务器 ↔ Windows ↔ 服务器" 的目录迁移,本质拼的是:

  • 工具是否靠谱(rsync > scp)
  • 路径是否严谨
  • 权限是否到位

命令本身不难,翻车往往是细节。

相关推荐
云飞云共享云桌面8 小时前
智能装备工厂研发团队如何利用单台服务器承载 10 路 SolidWorks 并发?
运维·服务器·3d·自动化·制造
w01_02_038 小时前
deepseek, harness , windows , 安装。
windows
辻弋2018 小时前
手动关服务会自动重启、组策略家庭版用不了——Windows Update Blocker用“禁用+锁定”双保险,让Win10/11自动更新彻底闭嘴
服务器·人工智能·windows·电脑·开源软件
躺不平的理查德8 小时前
OpenSSL 的异步 TLS 1.3 加密
linux·运维·服务器
tedcloud1238 小时前
Awesome DSH Plugin 怎么用?给 DeepSeek Harness 搭建自己的插件生态
大数据·linux·服务器·人工智能·音视频
qinwsq9 小时前
Gmssl windows下编译
windows·gmssl
明王明王9 小时前
Ubuntu 26.04 使用 Windows Spotlight:给 Bing Wallpaper 加上 Spotlight 支持
linux·windows·ubuntu
夜月yeyue9 小时前
SOME/IP 服务模型
linux·服务器·单片机·安全·车载系统
程序员z79 小时前
深入理解 GMP 模型:Go 协程调度器的设计与调度场景全解析
服务器·网络·golang
Kismet_nvi10 小时前
Python 基础核心知识点总结
开发语言·windows·python