我有一个 1 TB 的外部硬盘驱动器,我打算(很久以前就应该这样做)用于备份,并且我做了很多实验来了解它。当我再次查看Property
桌面图形列表中菜单项中的属性时,我惊讶地发现大约三分之一已用完。然后我查看了命令行并得到了这个:
[root@localhost]/home/Harry# du -cs /run/media/Harry/CA6C321E6C32062B
167785742 /run/media/Harry/CA6C321E6C32062B
167785742 total
[root@localhost]/home/Harry# ls -alh /run/media/Harry/CA6C321E6C32062B
total 4.2M
drwx------ 1 Harry Harry 4.0K Nov 18 15:15 .
drwxr-x---+ 3 root root 60 Nov 21 14:14 ..
drwx------ 1 Harry Harry 4.0K Oct 22 2013 2014-01-07
drwx------ 1 Harry Harry 4.0K Sep 22 20:12 2014-09-22
drwx------ 1 Harry Harry 4.0K Sep 23 19:56 2014-09-23
drwx------ 1 Harry Harry 4.0K Sep 23 19:56 2014-09-24
drwx------ 1 Harry Harry 4.0K Sep 25 19:18 2014-09-25
drwx------ 1 Harry Harry 4.0K Sep 25 19:18 2014-09-26
drwx------ 1 Harry Harry 4.0K Sep 27 23:33 2014-09-27
drwx------ 1 Harry Harry 4.0K Sep 28 19:12 2014-09-28
drwx------ 1 Harry Harry 4.0K Oct 7 20:00 annals
-rw------- 1 Harry Harry 30 Apr 23 2013 autorun.inf
drwx------ 1 Harry Harry 0 Oct 12 16:54 GPS
drwx------ 1 Harry Harry 0 Nov 18 15:15 System Volume Information
-rw------- 2 Harry Harry 4.2M Apr 17 2013 TOSHIBA STOR.E ALU 2S 2.5.pdf
[root@localhost]/home/Harry#
我见过几个网站“解释”了这种差异,并给出了几个不同且相当令人困惑的答案,但没有一个可以帮助我恢复空间。
我不久前看过这个并“删除”了一个巨大的trash
文件夹,rm
我认为这也许是问题的一部分。
添加到此,在写完上面的内容和互联网搜索之后,我使用了这个命令:ncdu /run/media/Harry/CA6C321E6C32062B
,结果是。我也尝试过这个
[root@localhost]/home/Harry# baobab /run/media/Harry/CA6C321E6C32062B
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
Error creating proxy: The connection is closed (g-io-error-quark, 18)
(baobab:15557): dconf-WARNING **: failed to commit changes to dconf: The connection is closed
...它产生了这个图像。将鼠标指针移动到内环会产生标签Annals 171.8 GB
,但我无法将其显示到图像上。
请问有没有办法恢复这个明显被Annals
目录占用的额外空间?我不知道那是从哪里来的。就这一点而言,请把我当作一个完全的初学者。
答案1
为什么不直接删除annals
目录呢?
# rm -r /run/media/Harry/CA6C321E6C32062B/annals
注意:它看起来像是在 Windows 计算机中,因为它有一个System Volume Information
目录。这意味着它可能是NTFS?如果是这种情况,那么您最好使用对 *nix 更友好的文件系统对其进行格式化。
当然,这是假设您不想保留上面的任何内容。如果这样做,请先将其从磁盘上复制下来,然后进行格式化。
答案2
如果我正确理解了这个问题,那么问题在于您错误地阅读和解释了数据。 'ls'显示的大小是目录的大小清单,而不是目录中包含的所有文件的大小。
尝试这个:
拿一个小盒子。在里面放几本书或其他大/重的物体。现在拿一张小纸,在上面写上“一盒东西”。现在给盒子称重。然后分别称量这张纸的重量。它们是一样的吗?除非您使用非常重的纸张,否则不太可能。纸张(以及告诉您盒子里有什么的文字,但不是盒子本身)的重量可能很小,以至于秤甚至无法记录它。
目录列表大致相同。它不是内容目录的;我只是一个标签,告诉你里面有什么。这就是“ls”所报告的内容:仅标签的大小。另一方面,命令“du”告诉你这个盒子有多少以及其中的一切重。
那为什么是4.0K呢?好吧,想象一下,如果您有很多盒子,并且每个盒子的大小都相同。对于许多小物品(例如其他盒子中的物品的纸质清单),您可以将其中的许多物品放入一个盒子中。但对于非常大的物品/物品本身,您可能需要多个盒子来存放它们。同样,文件系统也非常相似。它将整个磁盘分成更小的块,称为“块”。对于非常小的物品,您只需要一个盒子。对于非常大的物品,您可能需要不止一件。在这种情况下,您的示例表明磁盘的块大小为 4.0K。因此,只要所有文件的列表在 4.0K 以内,它就不会使用另一个“盒子”/“块”。整个列表适合一个块,无论文件的实际内容是否适合。由于这是为每个块分配的最小大小,因此任何内容都将始终为 4.0k等于或小于4.0K。一旦列表超过 4.0K,它将分配另一个 4.0K 块,总大小为 8.0K。现在它不会分配另一个块,直到总大小超过 8.0K。等等。
如果您想知道为什么“ls”不列出目录数据使用的总大小和其中所有文件的总数,这很简单:每次执行“ls”命令时,它都必须计算每个项目的大小。想象一下,如果您执行“ls -al /”——每当您想要列出“/”时,它都必须计算整个 1TB 驱动器的总大小。但它必须检查文件系统中的每个文件,以确定哪些文件是符号链接,哪些是硬链接,哪些是挂载点等等,以便相应地调整总数。
例如,如果您有一个 4MB 驱动器(是的,即微小的按现代大小)划分为四个 1MB 分区。分区1是根“/”,分区2是交换空间,分区3安装在“/some/deep/nested/path”,分区4是“/home”。 “ls -al /”应该报告什么? “/”分区的总大小(1MB)还是所有四个分区的总大小(4MB)?如果不检查驱动器上的每个文件以查看它位于哪个分区,它如何知道哪个是哪个?对于 4MB 驱动器来说,这不会花费太多时间,但想象一下几乎满的 6TB 驱动器。当“ls”扫描驱动器上的每个文件时,您可能会等待几个小时。
“du”的做法有所不同,但这是文件系统如何维护使用数据的另一个非常复杂和技术性的过程。可以这么说,确实如此不是跟踪您想要的数据(每个目录的使用情况)。它只记录大小整个分区以及使用了多少空间整个分区所以它可以计算出空闲空间 = 总空间 - 已使用空间。如果它试图跟踪每个目录的信息,它会遇到与 'ls' 相同的问题,并且每次更改时都必须重新计算它(如果您只更改 6TB 上的单个字节,这可能需要几个小时)驾驶!)
答案3
如果您想保留/修复大部分内容,您的第一个选择是:将其连接到真正的 Windows 盒子,并chkdsk /f /r
在该驱动器上运行
警告:这可能需要几个小时。
检查例如http://technet.microsoft.com/en-us/magazine/ee872425.aspx以供使用。
由于未指定使用的文件系统,由于明显的autorun.inf
文件和System Volume Information
文件夹,我也假设为 NTFS。
(提示:TOSHIBA STOR.E ALU 2S 也已预格式化为 NTFS)
对于问题的另一部分,完全使用空间的差异可能来自损坏的文件系统,或来自打开的文件句柄。后者可以通过du -sm /run/media/Harry/CA6C321E6C32062B
和
df -m /run/media/Harry/CA6C321E6C32062B
输出的差异轻松观察到,并将 df 和 du 输出的已用空间进行比较,应该非常接近。
您也没有具体说明如何得出驱动器已使用超过 30% 的结论?