-
Notifications
You must be signed in to change notification settings - Fork 0
Load or MD5 check of binary files
Peter edited this page May 2, 2021
·
7 revisions
O uso de SHA256 é necessário apenas no pacote de preservação, o controle de arquivos de carga pode ser feito com MD5 por ser mais leve e um padrão mais amplamente utilizado nesse tipo de aplicação, com universo pequeno (sem risco de colizão no MD5).
PS: como arquivos binários diversos usar imagens ou PDFs de print-css-rocks.
Adaptando tutorial 10 ways, parte "Large Object storage":
cd /tmp
wget -O lesson-basic-antennahouse.pdf https://github.com/zopyx/print-css-rocks/raw/master/lessons/generated/lesson-basic/antennahouse.pdf
wget -O lesson-basic-prince.pdf https://github.com/zopyx/print-css-rocks/raw/master/lessons/generated/lesson-basic/prince.pdf
wget -O lesson-basic-weasyprint.pdf https://github.com/zopyx/print-css-rocks/raw/master/lessons/generated/lesson-basic/weasyprint.pdf
md5sum lesson-basic-*.pdfque irá produzir alguma coisa como:
6e0f6189c41a3456fe7ee7435498427c lesson-basic-antennahouse.pdf
aae24ad9d43266ad68a700fc41b56d6a lesson-basic-prince.pdf
96061a5d8495383c9016c18bb2ade8cd lesson-basic-weasyprint.pdf
A seguir mostrando que o MD5 funciona em binários, e que não precisamos carregar na base se o objetivo for apenas atestar o MD5. As linhas comentadas são as adaptações do tutorial onde o MD5 substituiu o load:
DROP TABLE IF EXISTS tmp_docs CASCADE;
CREATE TABLE tmp_docs(file_name text PRIMARY KEY);
COPY tmp_docs FROM PROGRAM 'ls /tmp/*.pdf' WITH (format 'csv');
--ALTER TABLE tmp_docs ADD COLUMN doc bytea, ADD COLUMN doc_oid oid;
ALTER TABLE tmp_docs ADD COLUMN md5 text, ADD COLUMN doc_oid oid;
UPDATE tmp_docs SET doc_oid = lo_import(file_name);
-- UPDATE tmp_docs SET doc = lo_get(doc_oid);
UPDATE tmp_docs SET md5 = md5(lo_get(doc_oid));
SELECT lo_unlink(doc_oid) FROM tmp_docs;
SELECT file_name, md5 FROM tmp_docs;Que produzirá algo como
md5 | file_name
----------------------------------+------------------------------------
6e0f6189c41a3456fe7ee7435498427c | /tmp/lesson-basic-antennahouse.pdf
aae24ad9d43266ad68a700fc41b56d6a | /tmp/lesson-basic-prince.pdf
96061a5d8495383c9016c18bb2ade8cd | /tmp/lesson-basic-weasyprint.pdf
(wiki temporária!)