Linux - znalezienie pozycji pierwszego niezerowego znaku w dużym pliku

0

Witam,

Mam sobie plik o wielkości 32 GB. Teoretycznie plik powinien zawierać same zera. W praktyce zapewne tak nie będzie. Chodzi mi o to, żeby znaleźć pozycję w pliku, na której jest pierwszy bajt inny niż 0.

Wyjaśnienie: chodzi o przetestowanie karty SD 32 GB. Wiem już że karta nie w całości jest dobra - wrzucając na nią plik zawierający losowe dane, zgrywając ten plik z niej z powrotem i porównując crc widzę że dane są przekłamane.

Wymyśliłem więc sobie, że zamiast wyrzucać kartę, sprawdzę do której pozycji dane są zapisywane jeszcze dobrze - i w tym celu zapełnię całą kartę zerami, zgram to z niej do pliku i sprawdzę na której pozycji dane są już przekłamane. A potem założę na karcie partycję w obszarze, który jest jeszcze "pewny".

Mam jednak problem z tym, jak przeszukiwać taki wielki plik. Z zadowalającą wydajnością. Macie jakiś pomysł? Idealnie byłoby, żeby już na etapie kopiowania dd mógł zauważyć, że napotkał coś innego niż 0 i poinformował mnie o tym, ale jak się zdaje takiej możliwości chyba nie ma.

0

A badblocks w zasadzie nie zrobi tego wszystkiego za Ciebie?

Zawsze też można dd a potem grep na hexdump. Ale to długo potrwa. (Brzmi jak "emacsem przez sendmail" :-/)

Pomyślałem też, że można by wciąć źródła dd i dopisać tam takie coś, co sprawdza. dd obsługuje filtry więc wsadzenie tego tam jako kolejny filtr nie powinno być znowu aż takie niemożliwe.

0

No tak, właśnie o to chodzi że dłuuugo to potrwa. No i nie wiem jak mi badblocks tu może pomóc? Wyświetli że są błędne sektory i na tym koniec.

0

No a co Ty chcesz zrobić jak nie znaleźć te bloki? Przecież badblocks mówi gdzie one są. Odpal z opcjami -wsv - pamiętaj, że w to test który niszczy cokolwiek, co było zapisane wcześniej!

0

Ok w takim razie spróbuję i zobaczę co pokaże

1 użytkowników online, w tym zalogowanych: 0, gości: 1