如何使用 'rhash' 中的更新功能

如何使用 'rhash' 中的更新功能

我在使用“rhash”更新 Ubuntu 服务器 14.04 上包含 md5 校验和的现有文件时遇到了麻烦。

这是我的脚本:

#!/bin/bash

sudo rhash -r -u --md5 /checksum/these/files --output=/checksum/these/files/checksum.md5

rhash 手册说“-u”会将任何新的校验和附加到文件末尾,但是当我运行 bash 脚本时,输出文件变得完全空白/没有任何内容(它甚至从列表中删除以前保存的校验和)。

我的脚本有什么地方做错了吗?还是我误解了“-u”选项?如果你们这些天才能给我提供任何帮助,那就太好了=]

答案1

rhash 手动的状态(重点是我的):

-u,--更新

更新命令行指定的哈希文件。程序计算并将哈希值附加到更新的哈希文件中 采用格式化选项指定的格式。哈希值是针对与哈希文件位于同一目录中但尚未存在于其中的文件计算的。

因此,输出被添加到/checksum/these/files而不是/checksum/these/files/checksum.md5。该/checksum/these/files/checksum.md5文件是由选项创建的--output,但由于您使用的-u是“更新原始文件”的意思,因此不会在那里打印任何输出。

例如:

$ date > file1
$ date > file2

$ md5sum * > hashes
$ cat hashes 
909b1419ee961b556e0013929d8b667e  file1
a6de9f219de32fec651e62e3c457169e  file2

$ rhash -r -u --md5 hashes --output=new
Updated: hashes

$ cat hashes
909b1419ee961b556e0013929d8b667e  file1
a6de9f219de32fec651e62e3c457169e  file2
d41d8cd98f00b204e9800998ecf8427e  new
$ cat new
$

如上所示,该文件new是在运行其余命令之前创建的,因此它包含在哈希校验中。由于newin没有关联的哈希hashes,因此将一行附加到hashes文件中。


更一般地讲,请不要sudo在不需要时使用。如果您确实需要 root 权限来修改,请从脚本中/checksum/these/files删除并使用:运行脚本本身。sudosudosudo /path/to/script.sh

相关内容