Ubuntuサーバー14.04で「rhash」を使用してmd5チェックサムを含む既存のファイルを更新するのに問題があります。
これが私のスクリプトです:
#!/bin/bash
Sudo rhash -r -u --md5 /checksum/these/files --output=/checksum/these/files/checksum.md5
Rhashのマニュアルでは、「-u」はファイルの最後に新しいチェックサムを追加しますが、bashスクリプトを実行すると、出力ファイルは完全に空になり、内容はまったくなくなります(以前に保存したチェックサムもリストから削除されます)。
スクリプトで何か間違ったことをしていますか?または、「-u」オプションを誤って解釈していますか?あなたの天才が私に与えることができるどんな助けも素晴らしいだろう=]
rhash
手動 状態(強調鉱山):
-u、-update
コマンドラインで指定されたハッシュファイルを更新します。プログラムは計算し、更新されたハッシュファイルにハッシュをフォーマットオプションで指定された形式で追加します。ハッシュは、ハッシュファイルと同じディレクトリにあるファイルに対して計算されますが、まだ存在していません。
したがって、出力は/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
にはhashes
に関連付けられたハッシュがないため、hashes
ファイルに行が追加されました。
より一般的な注意事項として、不要な場合はSudo
を使用しないでください。 /checksum/these/files
を変更するためにルートアクセスが本当に必要な場合は、スクリプトからSudo
を削除し、Sudo
:Sudo /path/to/script.sh
を使用してスクリプト自体を実行します。