Как использовать функцию обновления в '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,