删除据称比应有大小的文件是否安全

Isa*_*awU 28 linux ntfs filesystems rar

unrar在我的 1 TB 驱动器上调用 RAR 存档后NTFS,我留下了一个文件,据报道其大小为86T.

\n

删除此类文件安全吗?安全删除此文件的最佳方法是什么?

\n

当然,删除后,该文件应该取消链接,并且属于其他文件的任何实际数据应该不受影响,但我真的想确定这个\xe2\x80\xa6

\n
编辑1:
\n

du -h包含存档+提取文件的目录中的输出:

\n
26M .\n
Run Code Online (Sandbox Code Playgroud)\n
编辑 2:进展和发现
\n
    \n
  • chkdsk F: /scan确实在提取的文件中发现了损坏。
  • \n
  • chkdsk F: /fdid Deleting corrupt attribute record (0x80, "")(很可能属于该文件,因为记录段编号匹配)(属性 0x80
  • \n
  • 之后文件大小为 0
  • \n
  • 0大小的文件可以删除
  • \n
  • chkdsk F: /scan没有发现任何问题
  • \n
\n
编辑3:为了好奇
\n

Berore 使用以下命令修复文件chkdsk F: /f

\n
    \n
  • 无法使用 Double Commander 删除该文件(该文件已被 Double Commander \xe2\x80\x93 使用,可能正在尝试读取整个文件)
  • \n
  • rm由于权限被拒绝,无法使用(在 Windows 上)删除文件(我cmd以管理员身份运行)
  • \n
\n

use*_*686 40

这不一定比您的整个驱动器。许多文件系统(包括 NTFS 和 ext4)都支持稀疏文件,其中完全由“零”字节 ( 00 00 00 00 ...) 组成的区域没有分配给它们的任何磁盘扩展区 \xe2\x80\x93 此类文件很容易具有更大的“表观”大小比文件系统小,而实际数据分配(又名 Windows“磁盘上的大小”)更小。

\n

du您可以通过比较和du --apparent,或者通过使用选项列出文件ls -s/--size,或者使用 xfs_io 列出各个范围来检查文件是否稀疏:

\n
$ echo Test > large.bin\n$ truncate -s 10G large.bin\n$ ls -l -s\n4.0K -rw-r--r-- 1 root users 10G Jan 10 12:44 large.bin\n\n$ du -h large.bin; du -h --apparent large.bin\n4.0K    large.bin\n10G     large.bin\n\n$ xfs_io -r -c "fiemap -v" large.bin \nlarge.bin:\n EXT: FILE-OFFSET      BLOCK-RANGE      TOTAL FLAGS\n   0: [0..7]:          4118216..4118223     8   0x1\n   1: [8..20971519]:   hole             20971512\n
Run Code Online (Sandbox Code Playgroud)\n

如果有疑问,请将文件系统连接到 Windows 系统(虚拟机可能会这样做)并运行chkdsk X: /scanchkdsk X: /f并让它验证没有文件重叠 \xe2\x80\x93,或者在删除文件后,使用它来验证“可用空间位图”与现有文件并不不一致。

\n

一般来说,程序实际上无法创建比文件系统可以容纳的更大的文件:即使文件归档器也没有这种直接访问权限。如果您最终得到了一个不稀疏的错误大文件,这只能是操作系统文件系统驱动程序的错误,在这种情况下,从那时起您对该文件系统所做的任何操作都不能保证是安全的(如毕竟,删除是由同一个“坏”驱动程序完成的)。使用 Windows\' CHKDSK 验证文件系统。

\n

对于 Linux 上的 NTFS,请考虑在内置驱动程序ntfs3和早期ntfs-3g驱动程序之间切换,以验证它们的行为是否相同。还可以尝试在 Linux 本机文件系统(例如 ext4)上提取您的存档,看看它是否也会创建一个大文件。

\n

  • 为了完整起见:“truncate -s 100T”是创建具有任意“表观大小”和最小分配大小(通常是单个范围,例如 4 KiB)的稀疏文件的常用方法。 (9认同)
  • 看来 `chkdsk F: /f` 成功了。之后文件大小为0,可以删除。 (7认同)

har*_*ymc 10

如果磁盘出现问题,我建议第一步确保磁盘上的数据有备份。

由于磁盘是 NTFS,因此最好在 Windows 上按如下方式处理。

第二步,运行命令提示符并输入以下命令:

chkdsk C:
Run Code Online (Sandbox Code Playgroud)

如果发现任何错误,下一步将使用以下命令修复问题:

chkdsk /f C:
Run Code Online (Sandbox Code Playgroud)

最后一步,如果一切正确完成,您可以删除该文件。