小编Daf*_*ffy的帖子

从 /dev/stdin 文件制作 tar

我正在寻找的是一种通过 STDIN 传入任意数据的方法,并将其作为普通文件进行压缩。

我试过这个

$ echo test | tar -cf test.tar /dev/stdin
Run Code Online (Sandbox Code Playgroud)

这给了我一个test.tar包含内容的文件dev/stdin。该stdin文件是一个链接/proc/self/fd/0.

我想要的是dev/stdinTAR 文件内部是一个带有文本的常规文件test。类似的事情发生在:

$ tar -cf test.tar <(echo test)
Run Code Online (Sandbox Code Playgroud)

但名称不同。

这是可行的吗?

tar devices stdin

5
推荐指数
1
解决办法
3547
查看次数

可以通过稀疏文件使 Lostup 变得高效吗?

所以我的设置是这样的。

$ truncate -s 1T volume
$ losetup -f --show volume
/dev/loop0
$ mkfs.ext4 /dev/loop0
$ ls -sh volume
1.1G volume
$ mount /dev/loop0 /mnt/loop
Run Code Online (Sandbox Code Playgroud)

现在我有 1.1TB 的卷,正如预期的那样。ext4 的开销将稀疏文件扩展至 1.1G,但这没关系。现在添加一个文件。

$ dd if=/dev/urandom of=/mnt/loop/file bs=1M count=10240
$ ls -sh volume
12G volume
Run Code Online (Sandbox Code Playgroud)

很好,现在我不想要这个文件了。

$ rm /mnt/loop/file
$ ls -sh volume
12G volume
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,可用空间仍然占用空间,并$ fallocate -d volume释放了 1GB。

我的问题是,如何在不将卷扩展到完整大小的情况下将此处的可用空间清零?$ dd if=/dev/zero会将其扩展至完整大小,并conv=sparse使其在卷内创建一个无用的稀疏文件。

TL;DR:有没有一种方法可以losetup忽略空块对空扇区的写入,同时允许其他所有操作?

sparse-files loop-device fallocate-command

5
推荐指数
1
解决办法
2015
查看次数

有没有相当于物理拔掉USB设备的命令?

我正在做一些测试,涉及因不安全删除 USB 驱动器而导致的数据损坏,但我需要一种方法来在特定时间一致地删除驱动器。是否有一个命令相当于物理上拉出驱动器而不刷新任何缓冲区或缓存?

usb udev

5
推荐指数
1
解决办法
2143
查看次数

标签 统计

devices ×1

fallocate-command ×1

loop-device ×1

sparse-files ×1

stdin ×1

tar ×1

udev ×1

usb ×1