我在使用“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
是在运行其余命令之前创建的,因此它包含在哈希校验中。由于new
in没有关联的哈希hashes
,因此将一行附加到hashes
文件中。
更一般地讲,请不要sudo
在不需要时使用。如果您确实需要 root 权限来修改,请从脚本中/checksum/these/files
删除并使用:运行脚本本身。sudo
sudo
sudo /path/to/script.sh