Я создаю скрипт для копирования / контрольной суммы файлов .... под управлением последней Mac OS X / FreeBSD с возможностью портирования в CentOS, Debian или OpenBSD
Подробнее о скрипте:
- проверить, содержит ли исходный путь файлы / подкаталоги
- создать контрольную сумму файла (ов) для каждого dir / subdir
- tar / сжатие в целевой путь
- проверить целостность файла в целевом пути
Конечно, это параноидально, потому что проверки целостности файлов выполняются на уровне HW/HDD и могут быть легко проверены SMART, но спустя десять лет я не могу проверить целостность оригинала. Контрольная сумма создается на карте CF/XD и является оригинальной ... вы можете копировать столько, сколько хотите, и никогда не беспокоиться о так называемых гнилых битах, ошибках HW и так далее.
Конечно, можно использовать и rsync, но мне не нравится идея устаревших контрольных сумм MD5/SHA1 с возможными коллизиями. Чтобы оказаться в нужном месте в нужное время и сделать одно уникальное фото, нужны часы работы, "удачи" и пота. Если вы потеряете оригинальный RAW… он исчезнет навсегда, останется только память.
"Выживают только параноики" - Энди Грув
У меня есть простой рабочий скрипт для шага 1. в скрипте:
today=`date +%Y-%m-%d`
CHK='shasum -a512'
CHK_OUTPUT=($today)-checksum.txt
find . -type f ! -name ".*" -maxdepth 1 -exec $CHK {} \; > "$CHK_OUTPUT"
Я получаю файл контрольной суммы, как и ожидалось, но вопрос «Можем ли мы сделать его лучше?"
...cf83e1357eef47417a81a538327af927da3e ./(2017-07-19)-checksum.txt
Я хочу избавиться от надоедливых./ Поэтому я закодировал следующее ...
find ./ -type f ! -name ".*" -maxdepth 1 -exec bash -c '$CHK $(basename {}) > $CHK_OUTPUT' \;
к сожалению, я получаю следующую ошибку
bash: ${CHK_OUTPUT}: ambiguous redirect
еще одна попытка
find ./ -type f ! -name ".*" -maxdepth 1 -exec bash -c '$CHK $(basename {})' \; > $CHK_OUTPUT
это как-то работает, но со странными результатами
Я потерпел неудачу в UTFM и RTFM, и я понятия не имею, как даже спросить Google :-D
Кто-нибудь может подсказать, как это сделать, пожалуйста?
С уважением
Дэвид