小编Tan*_*n六四的帖子

Linux:从损坏的 HD 复制的最佳方法是什么,只复制可以完全读取的文件?

我正在从损坏的 HDD(不是 SDD)复制,其中大约 15% 的文件会导致 I/O 错误。我只想要剩下的 85% 完整文件,并获得损坏文件的列表。怎么做?

cp 在第一次读取错误时停止。scp/rsync 抱怨并删除副本(想要)并退出(不需要)。出现 I/O 错误后无法继续,至少通过阅读 rsync(1) 手册找不到。

我谷歌了很长时间,所有帖子都是关于其他需求的:

  1. 告诉海报IO错误意味着硬盘损坏(我知道);
  2. 告诉发布者一种复制单个文件好的部分的方法,用零填充损坏的数据(我有 100k 个文件,每个文件都小于 10KB,损坏的文件对我来说没有用,即使只丢失了一个字节);
  3. 告诉海报如何重复运行 rsync(通过网络)以对抗不良连接并完成复制。
  4. 告诉海报如何更改默认超时,让 rsync 更努力地读取文件(我不想这样做)
  5. 告诉发布者运行 fsck 来修复文件系统错误。

感谢您阅读不需要的答案列表!

注意:这是一个物理损坏的磁盘,由适当的诊断工具确认。我也运行了一个彻底的 fsck。

linux hard-drive rsync file-transfer command-line

4
推荐指数
1
解决办法
9765
查看次数

为什么 80 列控制台上有 11 个制表位?

您会假设,由于默认情况下每个选项卡向前移动 8 列,因此 80 列控制台将恰好有 10 个制表位。这可以反驳:

$ printf "1\t2\t3\t4\t5\t6\t7\t8\t9\t0\ta"
Run Code Online (Sandbox Code Playgroud)

人们会期望输出在 2 行中,因为有 10 个制表位,占用了所有 80 列的空间,加上一个字符,将被推到下一行。但是该命令会在 xterm、gnome-terminal 和 rxvt 中生成单个输出行。

发生的事情是最后一个制表位神奇地减少了一个字符的空间。

同时,expand(1) 维持一个 tab 的空间为 8,因此

$ printf "1\t2\t3\t4\t5\t6\t7\t8\t9\t0\ta" | expand
Run Code Online (Sandbox Code Playgroud)

会在 80 列的控制台上神奇地生成 2 行。

这似乎是某种标准。但我只是无法通过谷歌搜索找到来源。

仅在 Linux 中测试过,但恐怕所有 unix 都共享此内容。

terminal

2
推荐指数
1
解决办法
818
查看次数

移除vim的vsplit竖条,腾出空间而不是隐藏它

在过去的十年里,我通常在全屏模式终端模拟器(通常是 xterm)中工作,并且经常:vsplit在 vim 中工作。

1280×720 为典型的 16px 字体(8px 宽)提供 160 列,刚好够两个 80 列会话。同理,1920×1080 提供 240 列,刚好够三个 80 列会话。

但实际上 VIM 放置了一个竖线来分隔会话。栏可以隐藏或着色为背景¹,但会占用空间。这使我的编辑会话有 79 列,仅用于日常工作的一列(例如,编码约定要求每行少于 80 列;自动生成的电子邮件报告假定为 80 列)。

有没有办法腾出vsplit栏的空间?如果用 VIM 不能完成,我想知道什么编辑器可以更好地解决这个特殊需求。大多数 vi-clone 不支持多窗口/多缓冲区编辑,那些支持的(例如 vile)不支持垂直拆分,VIM 似乎是唯一能够垂直拆分的。emacs 能做得更好吗?

注 1:将栏切换到单个空间(没有可见栏)后,我知道很容易习惯没有视觉分割提示。它不是必须在那里的东西。这是如何:stackoverflow.com/questions/9001337/vim-split-bar-styling?

vim

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

标签 统计

command-line ×1

file-transfer ×1

hard-drive ×1

linux ×1

rsync ×1

terminal ×1

vim ×1