Puncte:1

Ce face de fapt parametrul -W al gudronului?

drapel tr

eu folosesc gudron pentru a împacheta niște date. Înainte de a-l muta într-o arhivă, vreau să verific integritatea tarball-ului. Conform paginii de manual, parametrul -W face o verificare:

-W, --verifică
Verificați arhiva după ce o scrieți.

Am testat asta și se pare că face ceva:

$ tar cvWf tartest.tar tartest/
tartest/
tartest/dir1/
tartest/dir1/bar
tartest/dir2/
tartest/dir2/foobar
Verificați tartest/
Verificați tartest/dir1/
Verificați tartest/dir1/bar
Verificați tartest/dir2/
Verificați tartest/dir2/foobar

Dar ce face mai exact gudron verifica aici? Prezența fișierelor? Mărime fișier? Sume MD5?

Puncte:1
drapel cn

A fost nevoie de câteva săpături pentru a ne da seama. În dosar src/compare.c în Git repo pentru tar, găsim o funcție numită verifica_volum (la linia 527 la momentul redactării), care conține următorul comentariu

Verificarea unei arhive este menită să verifice dacă suportul fizic a primit-o corect, așa că încercați să învingeți tamponarea inteligentă în memorie aferentă acestui mediu particular. Pe Linux, de exemplu, unitatea de dischetă nu ar fi accesată nici măcar pentru întreaga verificare.

Asta explică ce încearcă să facă, dar în ceea ce privește Cum o face, trebuie să ne uităm la codul funcției. Începe prin a compara antetele pentru a vă asigura că se potrivesc, iar dacă o fac, rulează funcția arhiva_dif (linia 461 la momentul scrierii), care merge articol cu ​​articol în interiorul arhivei, iar când întâlnește un fișier*, va rula funcția fişier_dif (linia 187). Începe prin a verifica câteva lucruri simple, cum ar fi tipul și dimensiunea fișierului (și altele). Dacă toate acestea sunt corecte, acesta (pentru un fișier normal) merge și verifică fiecare bloc al fișierului (în citeste_si_proceseaza funcție, linia 120). Pentru fișiere rare, se numește fișier_dif_rar (linia 698) în src/sparse.c, care verifică fiecare regiune a fișierului** folosind check_sparse_region funcția (linia 607), tot în src/sparse.c.

*Efectuează alte lucruri pentru alte tipuri de date arhivate, cum ar fi directoare

**Verifică fiecare regiune într-un mod similar în care verifică un întreg fișier normal (non-rarit).

Wayne_Yux avatar
drapel tr
Oh wow, deci face mult mai mult decât mă așteptam - grozav! Mulțumesc mult!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.