Как использовать функцию обновления в 'rhash'

У меня проблемы с использованием 'rhash' для обновления существующего файла, содержащего контрольные суммы md5 на сервере Ubuntu 14.04.

Вот мой сценарий:

#!/bin/bash

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

В руководстве по rhash говорится, что '-u' добавит любые новые контрольные суммы в конец файла, но когда я запускаю свой bash-скрипт, выходной файл становится полностью пустым / без содержимого (он даже удаляет ранее сохраненные контрольные суммы из списка).

Я что-то не так делаю в своем сценарии? Или я неправильно интерпретирую опцию -u? Любая помощь, которую вы, гении, можете мне оказать, была бы потрясающей =]

1 ответ

Решение

rhash ручные состояния (выделение мое):

-у, - обновить

Обновите хеш-файлы, указанные в командной строке. Программа вычисляет и добавляет хэши в обновленный хеш-файл в формате, заданном опциями форматирования. Хэши рассчитываются для тех файлов из той же директории, что и хеш-файл, которых еще нет в нем.

Итак, вывод добавляется в /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 когда это не нужно. Если вам действительно нужен root-доступ для изменения /checksum/these/files, удалить sudo из скрипта и запустить сам скрипт с sudo: sudo /path/to/script.sh,

Другие вопросы по тегам