记一次Win10磁盘空间清理 robocopy mklink
# 流程说明
通过【robocopy】命令和【mklink】命令联动的方式进行【用户目录】分区迁移;
几个注意事项:
1. 迁移【loki】用户的时候,需要再PE或者非loki用户自身进行操作,比如启用【administrator】
2. 进行删除用户目录为了保证数据内容已经完全同步,磁盘空间足够的情况下可以先将其重名命,而非直接删除
# 方法指引
robocopy <源路径> <目标路径> /E /ZB /COPYALL /DCOPY:T /LOG:<日志文件路径>
robocopy C:\Users\loki H:\ /E /ZB /COPYALL /LOG:C:\Log\robocopy.log
/E:复制子目录,包括空目录
/COPYALL:复制所有文件信息(对应 /COPY: DATSOU )
/XJ : 排除连接点和符号链接(用于文件和文件夹)
/ZB :: 使用可重启模式;如果访问被拒绝,使用备份模式
/DCOPY:copyflag[s] :: 复制目录的内容(默认为/DCOPY:DA)。(copyflags: D=数据,A=属性,T=时间戳,E= ea, X=跳过所有数据流)。
# 遇到报错
2024/08/24 09:45:59 错误 1921 (0x00000781) 正在给目标目录添加时间戳
解决方案:增加/XJ参数
原因:
由Application Data文件夹引起的,该文件夹实际上是一个Junction。
当您的Robocopy批处理文件在Users文件夹中遇到Junction或Symbolic Link时,可能会发生这种情况。
通过在命令中包含/xj开关,可以轻松解决此问题。
# 类似linux tail 命令,用于实时查看日志文件同步数据进度
powershell -command "& {Get-Content .\robocopy.log -Tail 5}"
powershell -command "& {gc .\robocopy.log -wait -encoding utf8}"
# 清理原始目录(需谨慎,确认数据已经完全同步,测试后,清理释放空间)
rmdir <目录名> /s /q
# 创建硬链接
mklink /j Users D:Users
参考内容:
https://www.tianjinsc.cn/default/1844615.html
https://blog.csdn.net/qq_41566366/article/details/131128356
https://deepinout.com/computer/computer-top-articles/1694267519_j_what-is-the-robocopy-command-to-copy-folders-and-subfolders.html
# mklink中,/D和/J的区别
https://blog.csdn.net/Solariany/article/details/139099884
https://liam.page/2018/12/10/mklink-in-Windows/