kby*_*yrd 16 windows-7 ntfs hardlink
在 Win7 NTFS 卷上,我正在使用正确支持 --link-dest 的 cwrsync 创建“快照”类型的备份。所以我有:
z:\backups\2010-11-28\cygdrive\c\Users\...
z:\backups\2010-12-02\cygdrive\c\Users\...
Run Code Online (Sandbox Code Playgroud)
2010-12-02 的内容主要是硬链接回 2010-11-28 目录中的文件,但只有 2010-12-02 才有一些新的或更改的文件。在 linux 上,'du' 实用程序会告诉我每个增量快照占用的实际大小。在 Windows 上,cygwin 下的 explorer 和 du 都被硬链接所迷惑,并且显示 2010-12-02 比 2010-11-28 占用更多空间。
是否有 Windows 实用程序可以显示实际使用的正确空间?
DMA*_*361 12
尝试使用Sysinternals Disk Usage(也称为du),特别是使用-u和-v标志将只计算唯一出现的次数,并且会显示每个文件夹的使用情况。
据我所知,文件系统没有显示原始文件和硬链接之间的区别(这实际上是硬链接的重点),因此您不能逐个文件夹地打折它们,但是需要做这个比较。
为了测试,我创建了一个包含 6 个文件的随机文件夹。克隆了整个事情。然后在第一个文件夹中创建了几个硬链接和软链接,以引用第一个文件夹中的其他文件,以及第二个文件夹中的一些文件。
运行du -u -v testFld结果(注意文件夹旁边的值以 KiB 为单位):
104 <path>\testFld\A
54 <path>\testFld\B
149 <path>\testFld
Totals:
Files: 12
Directories: 2
Size: 162,794 bytes
Size on disk: 162,794 bytes
Run Code Online (Sandbox Code Playgroud)
运行du -u -v testFld\a结果:
104 <path>\testFld\a
...
Run Code Online (Sandbox Code Playgroud)
运行du -u -v testFld\b结果:
74 <path>\testFld\b
...
Run Code Online (Sandbox Code Playgroud)
注意到不匹配了吗?
A 中引用 B 中文件的符号链接仅在“完整”运行期间计入 A,而 B 仅返回 54(即使文件最初位于 B 中并从 A 硬链接)。当您单独测量 B 时(或者,如果您不使用-u唯一标志),它将计算其“完整”测量值 74。
PowerShell 5 可能是一个选项。它适用于 Windows 7,但我仅在 Server 2012 R2 和2015 年 4 月预览版上进行了测试
PowerShell 5 中的文件系统提供程序有两个新属性LinkType和Target:
ls taskmgr.exe | fl LinkType,Target
Run Code Online (Sandbox Code Playgroud)
这返回:
LinkType : HardLink
Target : C:\Windows\WinSxS\amd64_microsoft-windows-advancedtaskmanager_..._6.3.9600.17..2\Taskmgr.exe
Run Code Online (Sandbox Code Playgroud)
所以现在我只能显示 system32 中所有非硬链接的文件:
cd $env:SystemRoot\System32
ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -ne HardLink | Measure-Object -Property Length -Sum
Run Code Online (Sandbox Code Playgroud)
这返回:
Count : 844
Sum : 502,486,831
Run Code Online (Sandbox Code Playgroud)
您可以将其与所有文件进行比较:
ls -Recurse -File -force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
Count : 14092
Sum : 2,538,256,262
Run Code Online (Sandbox Code Playgroud)
因此超过 13,000 个 2GB 以上的文件是硬链接
| 归档时间: |
|
| 查看次数: |
7453 次 |
| 最近记录: |