小编rat*_*lan的帖子

如何告诉 rsync 跳过损坏的硬盘驱动器块上的文件,而不是试图读取它

我正在尝试从有硬件错误的磁盘中恢复文件。

磁盘已由磁盘实用程序修复,但它告诉我磁盘已损坏,因此我需要在发生故障之前备份所有内容。

所以我试图通过finder复制文件,但它卡住了。尝试了其他实用程序,当磁头碰到损坏的块时,他们在尝试复制文件时卡住了。

所以我尝试了 rsync,它似乎有效;但是当我遇到坏块时需要很长时间。

所以我想知道,是否有办法告诉 Rsync 甚至不打扰文件,如果它花费的时间太长?我可以指定每个文件的尝试次数,或者每个文件需要尝试多长时间?

我不确定这个驱动器能用多久,所以我想尽快把所有数据从里面取出,同时我仍然可以挂载它并在 finder 中看到它上面的数据。

这是我使用的命令;如果有任何方法可以减少对文件的尝试,请提出建议,这样我就可以让 rsync 尝试读取损坏的块,但要避免在特定扇区上停留太久。

rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup
Run Code Online (Sandbox Code Playgroud)

提前致谢。

rsync macos

17
推荐指数
2
解决办法
2万
查看次数

使用 sed 替换字符串的一部分

我打算替换文件中的某些字符串;所以我正在使用 sed。

我想替换字符串,而 sed 读取字符串并将文本附加到字符串的中间。

例子:

string in myfile : user=blabla
string that I want to obtain: user=bob
Run Code Online (Sandbox Code Playgroud)

所以我以这种方式运行 sed,让它搜索“user=”字符串,并将其替换为“user=bob”

sed -i 's/user=*/user=bob/' myfile
Run Code Online (Sandbox Code Playgroud)

我得到的是

user=bobblabla
Run Code Online (Sandbox Code Playgroud)

基本上 sed 认为我只想替换那部分,而我想用新字符串替换整个字符串。我认为 * 会告诉 sed 考虑之后的任何事情,但它不起作用。

因为我不知道“blabla”是什么,所以我不能把它放在 sed 命令中。我如何告诉 sed 查找以“user=”开头的字符串并将整个字符串替换为新字符串?

bash sed

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

标签 统计

bash ×1

macos ×1

rsync ×1

sed ×1