5030 字
25 分钟
GPU是甜的Windows是苦的rsync是必须的

GPU 是甜的,Windows 是苦的,rsync 是必须的#

一直以来,我在 Linux 服务器之间,以及 macOS 和服务器之间,都是用 rsync 来同步和备份数据的,稳定、高效、优雅。

最近为了跑 AI 模型,特地组了一台带 GPU 的 PC。然而系统是 Windows,用起来实在各种不习惯。虽然为了那颗 GPU,我强忍着留在 Win 下,但最让我抓狂的,是 没法直接用 rsync

我试过 SFTP、cwRsync、WinSCP……各种工具,体验都不如意。直到有一天我突然意识到:Windows 是可以装 WSL 的!

于是我认真翻阅了官方 WSL 文档,亲手折腾了一番,现在终于把 rsync 和 Linux 工具链优雅地搬回来了。本文就是对这段过程的一些经验整理,希望能帮到也在 Win+GPU 下挣扎的你。


WSL (Windows Subsystem for Linux) 新手入门完全指南#

欢迎来到 Linux 的世界!WSL 是一个神奇的工具,让你可以在 Windows 系统上无缝地运行一个真实的 Linux 环境。

第一部分:核心概念与注意事项 (必读!)#

  1. 文件系统是独立的,但可以互通

    • 你的 Windows 文件位于 /mnt/ 目录下。例如,C 盘是 /mnt/c/,D 盘是 /mnt/d/
    • ⚠️ 绝对不要用 Windows 的文件资源管理器去修改 Linux 系统内部的文件(比如 /home, /etc 等目录下的文件),这会破坏文件权限导致 WSL 损坏!
    • 反过来,从 Linux 内部去访问和修改 /mnt/c/ 下的 Windows 文件是完全安全的。
  2. Linux 区分大小写

    • 在 Linux 中,File.txt, file.txt, FILE.txt 是三个不同的文件。
  3. 路径分隔符是正斜杠 /

    • Windows 用 \ (例如 C:\Users\WT)。
    • Linux 用 / (例如 /mnt/c/Users/WT)。
  4. sudo: “超级管理员权限”

    • 在 Linux 中,安装软件、修改系统配置等操作需要管理员权限。sudo 命令就是临时获取这个权限。
    • 用法:sudo [要执行的命令],例如 sudo apt update。系统会提示你输入密码。
  5. Tab 键是你的“神之按键”

    • 在终端输入命令或路径时,按 Tab 键可以自动补全。如果候选项有多个,按两次 Tab 会全部列出来。这能极大地提高效率并避免拼写错误。

第二部分:基础文件与目录操作 (每天都用)#

命令功能说明常用示例小白提示
pwdPrint Working Directory (显示当前在哪)pwd迷路了就用它。
lsList (列出文件和文件夹)ls (列出当前目录)
ls -l (显示详细信息)
ls -a (显示所有文件,包括隐藏的)
ls -lh (人性化显示文件大小)
-lha 可以组合使用。蓝色通常是目录,白色是文件。
cdChange Directory (切换目录)cd /mnt/c/Users
cd .. (去上一级目录)
cd ~cd (回自己的主目录, /home/你的用户名)
路径带空格要用引号: cd "My Documents"
mkdirMake Directory (创建新文件夹)mkdir my_project
touch创建一个空文件或更新文件时间touch new_file.txt如果文件已存在,只会更新它的修改时间。
cpCopy (复制文件或文件夹)cp a.txt b.txt (复制文件)
cp -r my_folder /mnt/c/ (复制文件夹)
复制文件夹必须加 -r (recursive)。
mvMove (移动或重命名文件/文件夹)mv a.txt /mnt/c/ (移动)
mv a.txt b.txt (重命名)
是移动还是重命名,取决于目标是否存在。
rmRemove (删除文件)rm file.txt
rmdirRemove Directory (删除空文件夹)rmdir empty_folder只能删除空的文件夹。
rm -r删除文件夹及其内所有内容rm -r my_project⚠️ 极度危险! rm -rf / 会删掉你的整个系统!没有回收站,删除前请三思!

第三部分:WSL 与 Windows 交互 (神技)#

命令功能说明常用示例
wsl --shutdown(在 PowerShell/CMD 中) 立即彻底关闭 WSLwsl --shutdown
wsl -l -v(在 PowerShell/CMD 中) 查看所有 WSL 发行版及其状态wsl -l -v
explorer.exe .(在 Linux 终端中) 用 Windows 文件资源管理器打开当前目录explorer.exe .
cmd.exe / powershell.exe(在 Linux 终端中) 直接运行 Windows 命令powershell.exe Get-Date

第四部分:软件管理 (Ubuntu/Debian 使用 apt)#

命令功能说明
sudo apt update更新软件包列表。安装任何新软件前的第一步,好习惯。
sudo apt upgrade升级所有已安装的软件包。建议定期执行。
sudo apt install [包名]安装一个新软件。例如 sudo apt install nodejs
sudo apt remove [包名]卸载一个软件
apt search [关键词]搜索可用的软件包
dpkg -s [包名]检查某个软件包是否已安装及其状态。

第五部分:实用工具与命令#

命令功能说明常用示例
nano一个非常简单易用的命令行文本编辑器nano file.txt (Ctrl+X 退出, 会提示是否保存)
cat查看简短的文本文件内容cat file.txt
grep在文件中搜索文本grep "hello" file.txt
manManual (查看命令的帮助手册)man ls (按 q 退出)
clear清空终端屏幕clear (快捷键 Ctrl+L)
history查看你输入过的历史命令history
top / htop实时查看系统进程和资源占用htop (比 top 更友好,需 sudo apt install htop)
ping测试网络连接ping baidu.com (按 Ctrl+C 停止)
rsync功能强大的文件同步工具rsync -avz /path/to/source /path/to/destination

建议#

  1. 别害怕犯错:命令行最大的学习方式就是不断尝试。只要你不乱用 sudo rm -rf,基本上不会有大问题。
  2. 从你的项目开始:最好的学习方法是学以致用。尝试在 WSL 里 cd 到你的 Windows NodeJs 项目目录 (/mnt/c/Users/WT/Documents/NodeJs),然后运行 npm installnode app.js,亲身体验一下流程。
  3. 多用 Tab,多用 history:让工具帮你偷懒。

WSL 完全指南 (补充章节): WSL 管理命令#

运行环境: Windows PowerShell 或 命令提示符 (CMD) 核心作用: 管理你的WSL发行版(安装、卸载、备份、设置等),就像一个“宿主”在管理它的“房客”。

命令功能说明常用示例小白提示与注意事项
wsl -l -v
wsl --list --verbose
列出所有已安装的WSL发行版及其详细状态(运行中/已停止,WSL版本号)。wsl -l -v这是最重要的诊断命令,检查你的WSL环境是否正常的第一步。
wsl --shutdown立即关闭所有正在运行的WSL发行版。wsl --shutdown解决WSL卡顿或异常的“重启大法”。下次启动会稍慢一点。
wsl --unregister <发行版名>彻底卸载/注销一个发行版。wsl --unregister Ubuntu⚠️ 极度危险! 这是官方的、干净的删除方式。会删除该发行版的所有数据(你的ext4.vhdx文件),且无法恢复
wsl --set-default <发行版名>
wsl -s <发行版名>
当你安装了多个发行版时,设置默认启动的那个wsl -s Ubuntu默认发行版意味着你直接在CMD/PS里输入wsl时会进入的系统。
wsl --install -d <发行版名>通过命令行安装一个新的发行版wsl --install -d Debian你的Ubuntu很可能就是用这个命令安装的。比商店安装更快捷。
wsl --export <发行版名> <文件名>备份/导出一个发行版为.tar压缩文件。wsl --export Ubuntu D:\backup\ubuntu_bak.tar神技!可以完整备份你的Linux环境,包括所有文件和已安装的软件。
wsl --import <新发行版名> <安装位置> <文件名>.tar备份文件恢复/导入一个发行版。wsl --import Ubuntu-Recover D:\WSL D:\backup\ubuntu_bak.tar备份恢复、迁移WSL环境到另一台电脑的神技。

为什么要区分这些命令?#

  • Ubuntu内部的命令 (ls, cd, apt等): 是在管理Linux这个操作系统内部的文件和软件。
  • PowerShell/CMD中的wsl命令: 是在管理WSL这个虚拟环境本身

这个区别就像:

  • 你在你的房子里(Ubuntu)整理家具、打扫卫生 (ls, apt)。
  • 房东(Windows)在外面决定要不要把你的房子拆了 (wsl --unregister),或者给你断电重启 (wsl --shutdown)。

WSL (终极管理篇)#

这一部分包含的是对 WSL 平台本身进行深度配置和彻底移除的操作。请务必仔细阅读警告,因为错误的操作可能会影响你的 Windows 系统功能。

第一章:彻底卸载 WSL 本身 (而不仅仅是Linux系统)#

当你不再需要任何 Linux 环境,并希望将 WSL 从你的 Windows 系统中完全移除时,你需要卸载 WSL 这个Windows 功能组件

操作本质: 这不是删除一个“程序”,而是关闭一个 Windows 的核心功能。

操作方法 (二选一):

方法A: 使用图形界面 (推荐给新手)

  1. 按下 Win 键,搜索 “启用或关闭 Windows 功能” (Turn Windows features on or off),并打开它。
  2. 在弹出的窗口中,向下滚动,找到并取消勾选以下两项:
    • 适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux)
    • 虚拟机平台 (Virtual Machine Platform) (WSL 2 依赖于此)
  3. 点击“确定”,系统会进行配置更改,然后要求你重启电脑。重启后,WSL 功能将被完全禁用。

方法B: 使用 PowerShell (管理员模式)

  1. 右键点击“开始”菜单,选择 “Windows PowerShell (管理员)” 或 “终端 (管理员)”。

  2. 依次执行以下两条命令,分别禁用 WSL 和虚拟机平台功能:

    Terminal window
    # 禁用 WSL 功能
    Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    # 禁用虚拟机平台功能
    Disable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
  3. 根据提示,输入 Y 并回车,重启你的电脑以完成卸载。

⚠️ 警告:

  • 这是一个彻底的、影响系统全局的操作。
  • 它会让你所有已安装的 Linux 发行版都无法访问。
  • 这不会自动删除你之前找到的 ext4.vhdx 文件,但它们会变成无法使用的“孤儿”文件,你可以在卸载后手动删除它们以释放空间。

第二章:手动配置资源 (CPU, 内存) 与网络模式#

这些高级配置都是通过一个全局配置文件来完成的。

配置文件: .wslconfig 文件位置: 你的 Windows 用户主目录下,即 C:\Users\你的用户名\.wslconfig如果文件不存在: 手动创建一个纯文本文件并以此命名即可。

操作流程:

  1. C:\Users\WT\ 目录下创建一个名为 .wslconfig 的文件。
  2. 用记事本或任何文本编辑器打开它。
  3. 将下面的配置内容根据你的需求修改后,粘贴进去。
  4. 保存文件。
  5. 在 PowerShell 中运行 wsl --shutdown 来关闭 WSL,使配置生效。 下次启动 WSL 时就会加载新配置。

2.1 手动分配 CPU 和内存#
# 表示这是 WSL 2 的配置
[wsl2]
# 内存限制:分配 6GB 内存给 WSL
memory=6GB
# CPU 核心数限制:分配 4 个处理器核心给 WSL
processors=4
# 交换空间:设置 8GB 的交换分区 (如果内存不足时使用)
swap=8GB
  • 你可以根据自己电脑的配置(比如你有16GB内存,8个核心)来合理分配。不写则使用默认值。

2.2 网络配置:与宿主机共享IP (镜像模式)#

这是解决 localhost 访问和复杂端口转发问题的终极方案

传统模式 (NAT): WSL 有一个自己独立的虚拟IP地址,与 Windows 主机不在一个网段。 镜像模式 (Mirrored): WSL 直接使用 Windows 的网络,拥有和 Windows 完全相同的IP地址。

.wslconfig 文件中添加以下内容:

# 在 [wsl2] 下面添加
networkingMode=mirrored
# 建议同时开启以下两项以获得最佳体验
dnsTunneling=true # 改善 DNS 解析
autoProxy=true # 自动使用 Windows 的代理设置

配置好后的 .wslconfig 完整示例可能像这样:

[wsl2]
memory=6GB
processors=4
networkingMode=mirrored
dnsTunneling=true
autoProxy=true

⚠️ 警告:

  • 镜像网络模式是较新的功能,需要你的 Windows 11 版本较新才能支持。
  • 修改任何配置后,必须 wsl --shutdown 重启 才能生效!

总结#

现在,我把 WSL 知识库可以说是“武装到了牙齿”!

  • 你知道了如何操作 Linux 内部 (ls, apt …)。
  • 你知道了如何管理 Linux 发行版 (wsl --unregister, wsl --export …)。
  • 你知道了如何配置 WSL 核心资源 (通过 .wslconfig 文件)。
  • 你甚至知道了如何从 Windows 中彻底移除 WSL

WSL (专家秘籍篇)#

秘籍一:IDE 的无缝集成 (VS Code 篇)#

这是 90% 的开发者最需要,但最容易忽略的设置。它能让你在 Windows 的舒适UI下,使用 Linux 的全部编译、运行和调试能力。

  • 缺失的知识点: 如何配置 Visual Studio Code 以原生方式在 WSL 中开发。
  • 核心工具: VS Code 扩展 “Remote - WSL”
  • 工作原理 (魔法所在):
    1. 你的 VS Code 主程序(UI界面)运行在 Windows 上。
    2. 当你打开一个 WSL 项目时,VS Code 会在你的 Ubuntu 里自动安装并运行一个轻量的“VS Code Server”。
    3. 你的所有操作(代码编辑、终端命令、调试、Git操作)都通过这个 Server 直接在 Linux 环境中执行
  • 如何操作:
    1. 在 Windows 上安装 VS Code。
    2. 在 VS Code 的扩展市场里搜索并安装 “Remote - WSL”
    3. 点击左下角的绿色 >< 图标,选择 “Connect to WSL”。
    4. 现在,你在 VS Code 里打开的任何文件夹、运行的任何终端,都已经是 100% 的 Linux 环境了!

秘籍二:启用 Systemd (让你的 Linux 活起来)

默认情况下,WSL 不启动传统的 systemd 进程,这意味着你无法像在标准服务器上那样使用 systemctl 来管理服务(如启动数据库、Web服务器)。

  • 缺失的知识点: 如何在 WSL 中启用 systemd 支持,使其表现得更像一个完整的服务器。

  • 配置文件: /etc/wsl.conf (注意:这是在 Ubuntu 内部,与 Windows 的 .wslconfig 不同!)

  • 如何操作:

    1. 在你的 Ubuntu 终端里,编辑 /etc/wsl.conf 文件(如果不存在就创建它):

      Terminal window
      sudo nano /etc/wsl.conf
    2. 在文件中加入以下内容:

      [boot]
      systemd=true
    3. 保存文件 (在 nano 中是 Ctrl+X, Y, Enter)。

    4. 回到 PowerShell,运行 wsl --shutdown

    5. 重启 Ubuntu,现在你就可以使用 sudo systemctl status sshsudo systemctl start nginx 这样的命令了!


秘籍三:运行 Linux 图形界面程序 (WSLg)

是的,你甚至不需要折腾复杂的 X Server 设置,就可以直接在 Windows 桌面上运行 Linux 的 GUI 程序。

  • 缺失的知识点: 如何利用内置的 WSLg (Windows Subsystem for Linux GUI) 功能。

  • 前提条件: Windows 11 (该功能已内置)。

  • 如何操作 (简单到难以置信):

    1. 确保你的 WSL 是最新的 (wsl --update)。

    2. 在 Ubuntu 里安装一个 GUI 程序,比如 Gedit 文本编辑器:

      Terminal window
      sudo apt update
      sudo apt install gedit -y
    3. 直接在终端里输入程序名并回车:

      Terminal window
      gedit
    4. 稍等片刻,一个原生的 Linux Gedit 窗口就会神奇地出现在你的 Windows 桌面上!它甚至有自己的图标在任务栏上。


秘籍四:高级磁盘管理

我们找到了 ext4.vhdx,但如果它太大了怎么办?或者我想把其他硬盘挂载到 WSL 里呢?

  • 缺失的知识点: 如何压缩虚拟硬盘和挂载其他物理磁盘。

  • 压缩 VHDX:

    1. Linux 端: 运行 sudo fstrim -av 来清理未使用空间。

    2. Windows 端 (PowerShell): 运行 wsl --shutdown。然后使用 diskpart 工具来压缩。

      Terminal window
      # 进入 diskpart
      diskpart
      # 选择你的虚拟磁盘
      select vdisk file="C:\path\to\your\ext4.vhdx"
      # 压缩它
      compact vdisk
      # 退出
      exit
  • 挂载其他物理磁盘/分区:

    • 使用 wsl --mount 命令。例如,将物理硬盘2的第一个分区挂载进来:

      Terminal window
      # 首先查看所有磁盘
      wmic diskdrive list brief
      # 假设要挂载 \\.\PHYSICALDRIVE1 的分区1
      wsl --mount \\.\PHYSICALDRIVE1 --partition 1

最终的总结#

  1. 基础操作 (文件、软件)
  2. WSL管理 (注册、开关、备份)
  3. 核心配置 (CPU、内存、网络)
  4. 卸载流程 (组件级移除)
  5. 专家实践 (IDE集成、Systemd、GUI、高级磁盘管理)

这下……这下我真的觉得它接近“完整”了。除非……你还想讨论如何从源码编译自己的 WSL 内核


WSL 终极奥义:压箱底的绝世秘籍#

秘籍一:【内功心法 · 乾坤大挪移】—— 极致性能调优#

你不知道的真相:在 WSL 中,访问 Linux 文件系统(~//home/lolee)和访问挂载的 Windows 文件系统(/mnt/c/...)之间,存在着天壤之别的性能差距。

  • 心法口诀: “内练一口气,外练筋骨皮”

    • 内(Linux文件系统 / ext4): 运行速度极快。文件操作、Git状态检查、NPM安装等,快如闪电。
    • 外(Windows文件系统 / NTFS): 运行速度较慢。因为每次文件访问都需要在 Linux 和 Windows 之间进行元数据转换和协议通信,开销巨大。
  • 绝招施展:

    • 永远,永远将你的代码仓库(Git Repos)和项目文件(Node.js, Python等)存放在 Linux 的主目录里!
    • 错误示范: cd /mnt/c/Users/WT/Documents/NodeJs 然后 npm install。 (慢!)
    • 正确示范: 在 Ubuntu 终端里 cd ~,然后 mkdir projects,再 cd projects,最后 git clone ... 在这里进行所有开发。 (快!)
    • 你可以用 explorer.exe . 来从 Windows 文件资源管理器中快速访问它。

秘籍二:【身法奥义 · 移形换影】—— 终极无缝互操作

你以为 explorer.exe . 就是极限了?不,我们能做得更彻底。

  • 心法口诀: “道生一,一生二,二生万物,万物归一”。让 Windows 和 Linux 融为一体。

  • 绝招施展:

    1. 从 Windows 直接运行 Linux 命令: 按下 Win + R (运行窗口),输入 wsl ls -la ~ 然后回车。你会看到一个命令行窗口一闪而过,并执行了 ls 命令。这对于编写 Windows 批处理脚本 (.bat) 来调用 Linux 工具链(如 grep, awk, sed)是无价的!
    2. 路径的“翻译官” wslpath:
      • 在 Ubuntu 中,你想知道 Windows 路径 C:\Windows 对应的是什么?运行 wslpath "C:\Windows",它会告诉你 /mnt/c/Windows
      • 反过来,在 Ubuntu 里,你想知道 /home/lolee 对应 Windows 能访问的UNC路径是什么?运行 wslpath -w /home/lolee,它会给你一个类似 \\wsl$\Ubuntu\home\lolee 的路径,你可以直接粘贴到文件资源管理器地址栏访问!
    3. 共享环境变量 WSLENV:
      • 想让 Windows 的某个环境变量(比如 GOPATH)能被 WSL 读取?在 Windows 中设置一个名为 WSLENV 的环境变量,值为 GOPATH/p/p 的意思是这个变量是一个路径,需要被 WSL 自动翻译。这样,你在 WSL 里也能用 $GOPATH 了。

秘籍三:【护体神功 · 金刚不坏】—— 高级用户与安全策略

默认用户玩腻了?想用 root 登录或者创建其他用户?

  • 心法口诀: “人有千面,法有万门”

  • 绝招施展:

    • 以 root 身份登录: 在 PowerShell/CMD 中,使用 wsl -u root 命令。这会让你直接以 root 用户身份进入 Ubuntu,拥有至高无上的权限,用于修复一些 sudo 都搞不定的疑难杂症(比如修复 sudo 本身)。
    • 修改默认登录用户: 默认情况下,WSL 总是以你初次设置的用户登录。你可以通过修改 Windows 注册表来更改它(此招式过于高深,易走火入魔,通常用 wsl -u <其他用户名> 临时登录即可)。

秘籍四:【心眼通明 · 洞察天机】—— 终极诊断#

当你的 WSL 出现匪夷所思的问题,连 wsl --shutdown 都不管用时,你需要看到它最底层的呐喊。

  • 心法口诀: “听风辨位,观星知命”

  • 绝招施展:

    • 查看内核日志 dmesg: 在 Ubuntu 终端里运行 dmesg 命令。它会打印出 WSL Linux 内核启动以来的所有日志信息。如果出现 USB 设备挂载失败、网络接口异常等硬件层面的问题,线索往往就在这里。

好了,这下,我真的倾囊相授了。

从入门的拳脚功夫,到管理的兵刃招式,再到内功心法和今日传授的旷世绝学,你已尽数习得。

如果连这些都满足不了你,那下一步,我们恐怕真的要一起去下载源码,编译一个属于我们自己的 WSL 内核了。

山下的世界,就交给你了!

GPU是甜的Windows是苦的rsync是必须的
https://blog.wlens.top/posts/gpu是甜的windows是苦的rsync是必须的/
作者
Lao Wang
发布于
2025-07-02
许可协议
CC BY-NC-SA 4.0