Windows
1. WSL2 portproxy
show all port proxy
netsh interface portproxy show all
expose 22 from wsl
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=INNER_IP
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=localhost
delete port proxy
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=PORT
2. 要设置cmd.exe的默认代码页为65001 (UTF-8)
通过注册表编辑器设置:
-
按下Win + R键打开运行命令对话框。
-
输入regedit并按回车键,这将打开注册表编辑器。
-
导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
-
在该位置你可能需要创建一个新的String值(如果它还不存在):
-
右键点击Command Processor,选择新建 -> 字符串值。
-
命名这个新的字符串值为Autorun。
-
双击Autorun,在“数值数据”框中输入chcp 65001并点击“确定”。
-
关闭注册表编辑器。
这样每次cmd.exe启动时,都会自动执行chcp 65001命令将代码页设置为UTF-8。
3. 使用 robocopy 复制整个 Users 目录
当你计划复制整个 C:\Users 目录时,你的思路是完全正确的。使用 /MIR 和 /XJ 是处理这种复杂系统文件夹的关键。
直接说结论:对于复制 C:\Users 目录,使用 /MIR 和 /XJ 不仅更好,而且是必需的,但这还不够。
下面我们详细分析为什么,以及一个真正“生产环境”级别的完整方案。
为什么 /MIR 和 /XJ 是必需的?
-
/MIR (镜像)
- 优点: 它能确保目标目录和源目录完全同步。这意味着不仅会添加和更新文件,还会删除目标目录中那些源目录里已经不存在的文件。对于定期备份来说,这可以防止备份盘越来越臃肿,只保留最新状态。
- 风险: 请务必确认你的目标文件夹是专门用于此次备份的! 如果你把目标路径错指定到一个包含其他重要文件的文件夹,
/MIR会无情地删除那些与源目录无关的文件。
-
/XJ (排除 Junction Points - 目录联接点)
- 绝对关键:
C:\Users目录内部为了兼容性,充满了大量的 Junctions。最典型的例子就是在C:\Users\YourUser下有一个名为Application Data的 Junction,它会指回到C:\Users\YourUser\AppData\Roaming。 - 如果你不使用
/XJ,robocopy会进入这个 Junction,然后可能在AppData内部遇到另一个 Junction,从而陷入无限递归循环,直到路径超长或磁盘空间耗尽。 /XJ告诉robocopy:“看到 Junction 点了?忽略它,不要进去。” 这可以完美避免无限循环问题。
- 绝对关键:
光有 /MIR 和 /XJ 还不够:C:\Users 的特殊性
直接在运行的 Windows 系统上复制 C:\Users 会遇到两个主要障碍:
- 文件锁定: 你当前登录的用户配置文件(以及其他可能登录过的用户)中有大量文件是被系统锁定的,最臭名昭著的就是注册表配置单元
NTUSER.DAT。robocopy无法复制这些锁定的文件,会导致备份不完整。 - 权限问题: 即使你以管理员身份运行,也可能无法访问其他用户的某些私有文件夹或加密文件(EFS)。
生产环境下的最佳实践方案
为了解决上述问题,有两种推荐的方案。
方案一:离线复制 (最可靠)
这是最干净、最彻底的方法。你需要从一个非当前系统的环境中运行 robocopy。
-
启动到恢复环境 (WinRE):
- 按住
Shift键,然后点击开始菜单中的“重启”。 - 选择
疑难解答->高级选项->命令提示符。 - 此时,你的 Windows 系统并未完全启动,文件不会被锁定。
- 按住
-
在 WinRE 中运行 Robocopy:
- 在 WinRE 中,你的盘符可能会变,先用
diskpart->list volume确认一下你的系统盘(原C盘)和备份盘的盘符。假设系统盘是D:,备份盘是E:。 - 使用这个增强版指令:
robocopy "D:\Users" "E:\Backup\Users" /MIR /COPYALL /B /XJ /R:3 /W:5 /MT:16 /XD "AppData" "Local Settings" "Application Data" /XF "ntuser.dat*" /LOG:E:\Backup\users_backup_log.txt /TEE关键参数解释:
/B(Backup Mode): 这是离线复制的王牌! 它使用Windows的备份权限 (SeBackupPrivilege),允许robocopy绕过常规的文件权限(ACLs)来读取所有文件。这解决了权限问题。/XD "AppData" ...: 强烈推荐! 排除特定目录。Users目录下的大部分空间和问题都出在AppData,里面充满了缓存、临时文件等对备份价值不大的数据。排除它可以极大提升速度、减小备份体积。AppData(包含了 Local, LocalLow, Roaming)Local Settings,Application Data等是旧的 Junctions,虽然/XJ会跳过,但明确排除更干净。
/XF "ntuser.dat*": 明确排除注册表文件。即使在/B模式下,处理这些文件有时也可能出问题,而且恢复它们需要特殊操作,常规文件复制意义不大。
- 在 WinRE 中,你的盘符可能会变,先用
方案二:在线复制 (使用卷影副本 - VSS)
如果你无法离线操作,唯一的办法就是使用卷影复制服务 (Volume Shadow Copy Service, VSS)。VSS可以创建一个系统当前状态的“快照”,在这个快照里,文件不会被锁定。
robocopy 本身不直接支持创建 VSS 快照,但你可以通过 diskshadow 脚本来配合。
-
创建一个
diskshadow脚本 (例如vss_script.txt):set context persistent nowriters
add volume C: alias SystemBackup
create
expose %SystemBackup% X:- 这个脚本会在
C:盘上创建一个持久化的 VSS 快照,并把它挂载为X:盘。
- 这个脚本会在
-
创建一个批处理文件 (例如
backup_users.bat) 来执行所有操作:@echo off
REM --- 使用 diskshadow 创建 VSS 快照并挂载到 X: ---
echo "正在创建 C: 盘的卷影副本..."
diskshadow /s vss_script.txt > NUL
REM --- 检查快照是否成功创建 ---
if not exist X:\ (
echo "错误:创建卷影副本失败!"
goto end
)
echo "快照已成功挂载到 X: 盘,开始 Robocopy..."
REM --- 在快照上运行 Robocopy ---
robocopy "X:\Users" "D:\Backup\Users" /MIR /COPYALL /XJ /R:3 /W:5 /MT:16 /XD AppData /XF "ntuser.dat*" /LOG:D:\Backup\users_backup_log.txt /TEE
echo "Robocopy 完成。"
REM --- 使用 diskshadow 删除快照并卸载 X: ---
echo "正在卸载并删除卷影副本..."
diskshadow /s - << (echo delete shadows all & echo exit) > NUL
echo "备份完成!"
:end
pause -
以管理员身份运行
backup_users.bat。这个批处理文件会自动完成创建快照 -> 复制 -> 删除快照的全过程。
总结与建议
| 功能/参数 | 简单复制 | 备份C:\Users (推荐) | 解释 |
|---|---|---|---|
| 模式 | /E | /MIR | /MIR 用于同步,保持备份整洁。 |
| 链接处理 | /SL | /XJ | /XJ 必须用来避免 C:\Users 内的无限循环。 |
| 权限 | /COPYALL | /COPYALL /B | /B (备份模式) 是关键,用于绕过权限和文件锁定问题(离线时)。 |
| 环境 | 在线 | 离线 (WinRE) 或 在线+VSS | 离线最可靠,VSS是次优选择。 |
| 排除 | 不用 | /XD AppData... /XF ntuser.dat* | 排除临时和缓存数据,极大提高效率和备份质量。 |
最终建议:
为了获得一个真正无损、可靠的 C:\Users 目录备份,强烈推荐使用方案一(离线复制),并采用包含 /MIR, /XJ, /B, /XD 等参数的完整指令。这是系统管理员和IT专业人员的标准操作。
4. 将整个用户目录(C:\Users)重定向到新位置
好的,这是一个非常高级且有风险的操作,但确实可以实现。将整个用户目录(C:\Users)重定向到新位置,意味着你要告诉 Windows 系统:“从现在开始,所有用户的配置文件都去新的位置(如 D:\Users)查找和创建。”
极度重要警告: 这是一个对操作系统核心配置的重大修改。操作不当极有可能导致系统无法启动、用户无法登录、软件运行异常、Windows 更新失败等严重问题。在开始之前,必须、必须、必须创建一个完整的系统镜像备份(使用 Macrium Reflect, AOMEI Backupper, Acronis True Image 或 Windows 自带的系统映像备份功能),以便在出现问题时可以完全恢复!
使用目录联接点 (Junction)(推荐给已安装系统)
这种方法风险相对较低,因为它不修改核心注册表。它只是把 C:\Users 这个路径“欺骗”成一个指向 D:\Users 的快捷方式。
-
在 WinRE 命令提示符中操作。
-
重命名旧的 Users 文件夹:
- 这是为了释放
C:\Users这个名字。
ren C:\Users C:\Users.old - 这是为了释放
-
创建 Junction:
- 使用
mklink命令创建一个从C:\Users指向D:\Users的 Junction。
mklink /J C:\Users D:\Users/J表示创建的是目录联接点 (Directory Junction),它对于系统来说比普通快捷方式更透明。- 如果成功,你会看到
Junction created for C:\Users <<===>> D:\Users。
- 使用
-
重启系统:
- 关闭命令提示符,选择“继续”或“退出并继续到 Windows”。
5. Windows 11在更新重启时卡住超过20分钟
Windows 11在更新重启时卡住超过20分钟,确实是一个比较棘手的问题,但这通常是可以解决的。这可能由多种原因引起,例如更新文件过大、软件冲突、系统文件损坏或驱动程序问题。
您可以按照从易到难的顺序尝试以下几种方法来解决此问题:
第一步:耐心等待与强制重启
- 耐心等待:某些大型功能更新可能需要比预期更长的时间。如果您的硬盘指示灯仍在闪烁,表明系统仍在进行读写操作,建议再等待一段时间。
- 强制重启:如果长时间没有任何反应,您可以尝试强制重启。
- 长按电源按钮,直到电脑完全关机。
- 等待大约30秒后,再重新按下电源按钮开机。
- 很多情况下,系统会在重启后继续完成更新过程或自动回滚失败的更新。
第二步:使用Windows内置工具进行修复
如果强制重启后问题依旧,或者电脑无法正常进入系统,您可以尝试以下方法:
-
启动修复:多次强制重启(通常是3次)后,Windows会自动进入“高级启动选项”菜单。
- 在此菜单中,选择“疑难解答” > “高级选项” > “启动修复”。
- 系统将自动诊断并尝试修复妨碍Windows加载的问题。
-
进入安全模式:在安全模式下,系统仅加载最基本的服务和驱动程序,便于排查问题。
- 同样通过多次强制重启进入“高级启动选项”,然后选择“疑难解答” > “高级选项” > “启动设置” > “重启”。
- 电脑重启后,按“4”或“F4”键进入安全模式。
- 在安全模式下,您可以尝试卸载最近的更新或回滚驱动程序。
-
运行Windows更新疑难解答:如果能进入系统(无论是正常模式还是安全模式),可以运行此工具。
- 按下
Windows键 + I打开设置,前往“系统” > “疑难解答” > “其他疑难解答”。 - 找到“Windows更新”,然后点击“运行”按钮。
- 按下
第三步:使用命令行工具修复系统文件
对于更深层次的系统文件损坏,可以尝试使用命令行工具。
- 在搜索栏中输入“cmd”或“命令提示符”,右键点击并选择“以管理员身份运行”。
- 输入
sfc /scannow命令并按回车。这个命令会扫描并修复受保护的系统文件。 - 扫描完成后,再输入
DISM /Online /Cleanup-Image /RestoreHealth并按回车。这个命令会修复Windows系统映像。 - 完成后重启电脑,再次尝试更新。
第四步:清理更新缓存
损坏的更新缓存文件也可能导致更新卡住。
- 以管理员身份打开命令提示符。
- 依次输入并执行以下命令,停止相关服务:
net stop wuauservnet stop bits
- 然后,重命名SoftwareDistribution文件夹,该文件夹存储了更新文件。
- 最后,重新启动刚才停止的服务:
net start wuauservnet start bits
- 重启电脑后,Windows会重新创建更新文件夹并下载更新。
如果以上方法均无效,最后的选择可能是使用“系统还原”将电脑恢复到更新前的状态,或者“重置此电脑”。