如何模拟删除文件?(Linux)

Lem*_*m0n 4 linux

为了运行一些测试,我需要运行一个将删除文件的应用程序

由于每次我需要运行另一个测试时重新创建这个文件(> 40 GB)对我来说很昂贵,我想模拟这个文件的删除。

但这必须对删除它的应用程序完全透明。这意味着创建符号链接不是一个好的解决方案([ -L symlink ] 返回 0 而 [ -L file ] 返回 1,所以这对应用程序来说不是完全透明的)。

Bre*_*bad 6

有几种解决方案。dd像解决方案可能需要一些时间,但是使用搜索

dd of=mybigfile bs=1 count=0 seek=40G
Run Code Online (Sandbox Code Playgroud)

是即时的。然而,通过命令采取40G的空间没有看到df...

所以最好的可能是

fallocate -l 40g mybigfile
Run Code Online (Sandbox Code Playgroud)

立即创建mybigfile并且空间实际上是从 FS 中保留的(并在 中看到df

--评论后编辑--

硬链接怎么样

cd data 
make 40g file "myfile"
Run Code Online (Sandbox Code Playgroud)

然后对于每个测试

cd ../test 
ln ../data/myfile testfile

command to unlink testfile
Run Code Online (Sandbox Code Playgroud)

数据测试目录位于同一个 FS(不同的目录以防止错误等)。

硬链接状态非常透明,不太可能由应用程序测试。在取消链接操作将删除与inode相关的名称,然后计数器递减链接在inode中,只有当inode的计数器下降到零应该是非常快的(文件,其数据将被真正释放-这不会发生除非你也取消链接data/myfile)。