小编Emm*_*maV的帖子

cat 如何“知道”要使用的最佳块大小?

通过阅读本文,似乎将数据复制到不同的硬盘驱动器时, cat 会自动使用最佳块大小(或非常接近)。

我想知道它如何确定最佳块大小,以及 cat 使用的方法是否可以以某种方式应用于 dd。

dd block-device cat

9
推荐指数
1
解决办法
1959
查看次数

使用“dd”写入块设备时,是否证明需要“同步”?

每次我将文件写入空的原始块设备时,例如

# dd if=image.iso of=/dev/sdb status=progress
Run Code Online (Sandbox Code Playgroud)

我从未使用过任何类型的sync(即sync; conv=fsync; conv=fdatasync; oflag=sync; oflag=dsync)。

我注意到,dd没有永远退出,直到所有的写作完成。

我总是使用 Conky 的 I/O 工具和grep Dirty /proc/meminfo. 此外,设备的校验和始终与写入它的文件的校验和相匹配。所以我总是 100% 确定整个文件已写入设备。

我已将文件写入 ext4 卷进行比较。例如使用:

$ dd if=/dev/urandom of=~/file bs=1M count=50 iflag=fullblock
Run Code Online (Sandbox Code Playgroud)

写入 ext4 卷时,dd退出后在数据实际写入磁盘之前总是有大约 20 秒的延迟。

许多人提倡在sync命令后使用dd命令,或者在写入块设备时syncdd命令中包含几个选项之一。例如这里这里。但是,我不知道有人真正证明这是必要的。

此页面上的评论之一是:

sync在这里毫无意义[即直接写入/dev/sdX]。它只影响文件系统操作。

有五个人对这条评论投了赞成票,这与我的经验一致。

那么在写入块设备时,有没有dd在所有写入完成之前退出的情况?这真的发生在任何人身上吗?

其他书写选项如何,例如cpcat …

linux cache dd synchronization block-device

9
推荐指数
1
解决办法
1248
查看次数

如何防止cp合并两个同名目录?

我有两个同名目录:

$ ls mydir
file1 file2

$ ls other/mydir
file3 file4
Run Code Online (Sandbox Code Playgroud)

如果我复制mydirother,则两者mydir合并:

$ cp -r mydir other

$ ls other/mydir
file1 file2 file3 file4
Run Code Online (Sandbox Code Playgroud)

在手册(或信息)页面中的cp哪个位置说它默认执行此操作?

如果我使用cp -rn mydir other.

如果cp问我是否要合并两个mydirs,我会更喜欢它;这样,如果我复制mydirother而忘记 中已经有不同mydirother,我可以中止操作。这可能吗?

cp merge

7
推荐指数
1
解决办法
892
查看次数

如何反转 bash 历史列表?

历史示例:

$ history
1  whoami
2  pwd
3  ls
Run Code Online (Sandbox Code Playgroud)

要获得反转的历史列表,我这样做:

$ history|tac
3  ls
2  pwd
1  whoami
Run Code Online (Sandbox Code Playgroud)

但是有没有更好的方法来做到这一点,也许不需要调用另一个程序,例如对于那些没有安装 tac 的程序?

bash command-history

7
推荐指数
2
解决办法
4922
查看次数

为什么 dd 读取和写入同一个磁盘?

我一直dd在 Linux 中使用来覆盖外部 USB 硬盘驱动器。

当我使用 512 字节的默认块大小时,使用以下命令:

# dd if=/dev/zero of=/dev/sdb
Run Code Online (Sandbox Code Playgroud)

在整个操作过程中,硬盘驱动器(/dev/sdb)被交替读取和写入,一次大约 1GB。即read 1GB... ... write 1GB... ... read 1GB... ...write 1GB等尽可能多的数据从硬盘读出被写入。

我知道这是因为它显示在我的自定义 Conky 面板 ( diskio_read, diskio_write) 中,我知道它是磁盘 I/O 活动的 100% 可靠指标。

我在另一台计算机上使用不同的外部硬盘驱动器重复了这一点。它通过 USB 2.0 和 USB 3.0 发生。

相比之下,当我做同样的事情,但使用 1MB 的块大小时,使用以下命令:

# dd if=/dev/zero of=/dev/sdb bs=1M
Run Code Online (Sandbox Code Playgroud)

除了开始时有少量读取外,在运行过程中根本不读取硬盘驱动器。

鉴于这种现象发生在我的两台不同的计算机和两个不同的硬盘上,使用标准的 Linux 发行版(Xubuntu 14.04),任何想要的人都应该能够在自己的计算机上复制它。

有人可以解释一下这里发生了什么吗?

linux dd external-hdd

6
推荐指数
1
解决办法
1246
查看次数

将 pv 与 md5sum 一起使用

我曾经md5sumpv检查是在同一个目录中的文件的4吉布:

md5sum dir/* | pv -s 4g | sort
Run Code Online (Sandbox Code Playgroud)

该命令在大约 28 秒内成功完成,但pv的输出全是错误的。这是在整个过程中显示的那种输出:

219 B 0:00:07 [ 125 B/s ] [>                                ]  0% ETA 1668:01:09:02
Run Code Online (Sandbox Code Playgroud)

没有-s 4g和也是这样| sort。我也尝试过使用不同的文件。

我试过使用pvwithcat并且输出很好,所以问题似乎是由md5sum.

pipe hashsum pv

6
推荐指数
2
解决办法
1405
查看次数

'find -empty -delete' 删除非空目录

如果我创建以下目录结构:

mkdir -p dir1/dir2/dir3/dir4
Run Code Online (Sandbox Code Playgroud)

然后我运行find dir1,它返回:

dir1
dir1/dir2
dir1/dir2/dir3
dir1/dir2/dir3/dir4
Run Code Online (Sandbox Code Playgroud)

如果我运行find dir1 -empty,它只返回:

dir1/dir2/dir3/dir4
Run Code Online (Sandbox Code Playgroud)

显示只有 dir4 是空的。

但是,如果我运行find dir1 -empty -delete,所有四个目录都会立即删除。

我希望只删除 dir4,然后下次运行命令时,只删除 dir3,依此类推。为什么会发生这种情况,以及如何使用 仅删除 dir4 find

find

6
推荐指数
1
解决办法
399
查看次数

查看硬盘上文件/目录的物理位置

是否有任何 Linux 程序提供与 Sysinternals DiskView 相同(或部分)的功能,尤其是能够查看硬盘上文件的物理位置?

DiskView 网址:http ://technet.microsoft.com/en-gb/sysinternals/bb896650

filesystems hard-disk

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

如何在 bash 中撤消意外的换行符?

如果我无意中在命令中添加了换行符,据我所知,撤消它的唯一方法是按 Ctrl+c 并再次键入命令。例如:

$ cat 'John's File'
> ^C
$ cat "John's File"
Run Code Online (Sandbox Code Playgroud)

如果原始命令很长,这很烦人。

有没有办法删除换行符并删除>提示,以便我可以返回到原始命令?

bash line-editor

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

如何禁用此 GTK3 滚动条行为?

当我在 GTK3 程序中的滚动条滑块上单击超过一秒时,它变窄并且滚动变得非常缓慢。

我知道这是故意的,但我觉得这很烦人

我找不到有关如何禁用此行为的任何说明。任何人都可以帮忙吗?

gui xfce gtk scrolling gtk3

5
推荐指数
0
解决办法
1025
查看次数