Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Te, które nie mieszczą się w powyższych kategoriach, a mają coś wspólnego ze Slackware.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
VoyciecH
Użytkownik
Posty: 143
Rejestracja: 2007-03-14, 15:20
Lokalizacja: Nysa (Śląski Rzym)
Kontakt:

Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: VoyciecH »

Witam,

skopiowałem z 1 dysku na drugi duży katalog z podkatalogami (ok. 250GB w ok. 20000 filmach i zdjęciach z mojego aparatu) i chcę mieć pewność, że oba katalogi mają tą sama zawartość. Niestety programy typu "diff", "rsync" odpadają, bo trwałoby to wieki. Chciałbym, upewnić się, że rozmiary obydwu katalogów są identyczne.
"Własciwości" pokazują rozmiar katalogu tylko jako liczbę klastrów na dysku, a to mi nie wystarczy. Chcę znać dokładny rozmiar obydwu katalogów. Katalogi te znajdują się na 2 dyskach i mają różne rozmiary także po wydaniu komend "du -s" "du -sb --apparent-size". W Windows po wyświetleniu "Własciwości" były dwie wielkości: "Rozmiar" i "Rozmiar na dysku". Wartość "Rozmiar" pokazywała zawsze ten sam rozmiar katalogu bez względu na to na jakim dysku znajdują się katalogi.

Ponowne skopiowanie obydwu katalogów na 1 dysk nie jest możliwe, bo nie mam tyle miejsca :-( , a poza tym jest to zajęcie bardzo czasochłonne, a mnie chodzi o coś szybkiego (max. kilka minut).

W "mc" znalazłem opcję porównywania katalogów, ale nie uwzględnia ona podkatalogów :-(

Jak wyświetlić FAKTYCZNY rozmiar katalogu wraz z podkatalogami z dokładnością do bajtu, zamiast rozmiaru na dysku?

A może ktoś zna inny sposób na szybkie i proste porównanie 2 katalogów wraz z podkatalogami?

Proszę o pomoc... :-)
"To, co dla jednego jest chlebem powszednim, dla innych może być olśniewającym objawieniem." (autor mi nieznany)
Inni wiedzą o Tobie więcej niż Ci się wydaje, ale mniej niż im się wydaje.
----------------
Moja stronka: http://linux.media-soft.pl/
kesay
Użytkownik
Posty: 29
Rejestracja: 2010-06-26, 13:06
Kontakt:

Re: Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: kesay »

Witam

Głowy nie dam, ale różnice mogą wynikać z różnych systemów plików na obu dyskach. Jak duża jest różnica w rozmiarze? Jeśli na dysku źródłowym jest NieTenFileSystem, to mogły nie skopiować się wszystkie dane. Kiedyś miałem taki przypadek, iż podmontowałem dysk kolegi, gdzie był właśnie NTFS. Wszystko się pięknie zgrało, ale wielu danych brakowało. System nie widział plików z polskimi znakami diakrytycznymi w nazwach na partycji NTFS. Musiałem kombinować z opcjami montowania. Możliwe, że u Ciebie jest podobnie. Proponuję więc zacząć od zliczenia plików na obu dyskach, np.:

Kod: Zaznacz cały

$ tree | wc -l
Powinno się wykonać w miarę szybko. Co prawda, nie będziesz miał gwarancji co do zawartości danych, ale przynajmniej wykluczysz przypadek, który przytoczyłem. Przy takiej ilości danych danych coś szybkiego i skutecznego jednocześnie może nie istnieć ;)

Pozdro,
Paweł
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: mina86 »

--apparent-size powinno dawać oczekiwany rezultat. Możesz spróbować coś takiego:

Kod: Zaznacz cały

find -type f -exec wc -c -- {} + 2>/dev/null |
        perl -ne '$ret += $1 if /^\s*([0-9]+)\stotal\n$/; END { print "$ret\n"; }'
co bierze pod uwagę tylko pliki. Nie jestem pewny jak to jest z du.

UPDATE: W zasadzie to:

Kod: Zaznacz cały

find -type f -exec wc -c -- /dev/null {} + 2>/dev/null |
        perl -ne '$ret += $1 if /^\s*([0-9]+)\stotal\n$/; END { print "$ret\n"; }'
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: mina86 »

„Wygląda czytelniej ^.* ... hmm”
Ale nie działa, jeżeli jest dużo plików.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
VoyciecH
Użytkownik
Posty: 143
Rejestracja: 2007-03-14, 15:20
Lokalizacja: Nysa (Śląski Rzym)
Kontakt:

Re: Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: VoyciecH »

Kod: Zaznacz cały

$ find -type f -exec wc -c -- {} + 2>/dev/null | perl -ne '$ret += $1 if /^([0-9]+)\stotal$/; END { print "$ret\n"; }'

$ find -type f -exec wc -c -- /dev/null {} + 2>/dev/null |
>         perl -ne '$ret += $1 if /^([0-9]+)\stotal$/; END { print "$ret\n"; }'

$ `du -b`
bash: 21257886: nie znaleziono polecenia
$ find -type f -exec wc -c -- {} + 2>/dev/null | tail -n1
42507580 razem
$
Dzięki za pomoc :-) Powyżej znajdują się wyniki zadziałania podanych przez Was poleceń.

Pierwsze 2 polecenia wyświetlają u mnie puste linie (przykładowych kilkanaście plików w 2 katalogach - jeden katalog w drugim). Dwa pozostałe wyświetlają rózne wyniki i nie wiem, które są prawdziwe.

Poza tym nie wiem po co w poleceniu wyrażenie -- {} +. Opiszcie to, proszę. Rozumiem, że {} wstawia nazwę pliku, ale te 2 minusy i plus?
"To, co dla jednego jest chlebem powszednim, dla innych może być olśniewającym objawieniem." (autor mi nieznany)
Inni wiedzą o Tobie więcej niż Ci się wydaje, ale mniej niż im się wydaje.
----------------
Moja stronka: http://linux.media-soft.pl/
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: mina86 »

„Pierwsze 2 polecenia wyświetlają u mnie puste linie”
Poprawione.

„`du -b`”
Bez „`”.

„Dwa pozostałe wyświetlają rózne wyniki i nie wiem, które są prawdziwe.”
„du -b” liczy również miejsce zajęte przez katalogi i inne „niezwykłe” pliki. Wersje z find jedynie sumują rozmiary plików.

„Poza tym nie wiem po co w poleceniu wyrażenie -- {} +. Opiszcie to, proszę. Rozumiem, że {} wstawia nazwę pliku, ale te 2 minusy i plus?”
Dwa minusy oddzielają argumenty od plików. Porównaj „rm -f” i „rm -- -f”. plus informuje find, aby grupował pliki i uruchamiał jedno polecenie dla wielu plików, w przeciwieństwie do użycia średnika, które uruchamia jedno polecenie per plik.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
VoyciecH
Użytkownik
Posty: 143
Rejestracja: 2007-03-14, 15:20
Lokalizacja: Nysa (Śląski Rzym)
Kontakt:

Re: Sprawdzenie, czy 2 duże katalogi mają taki sam rozmiar

Post autor: VoyciecH »

Dalej nie działa.

Problem leży w kodzie perla, bo jak wkleiłem samo polecenie "find" to działało (wyświetliła się lista plików). Niestety nie znam perla, więc tylko domyślam się, że sumuje rozmiary z listy, którą generuje "find".
"To, co dla jednego jest chlebem powszednim, dla innych może być olśniewającym objawieniem." (autor mi nieznany)
Inni wiedzą o Tobie więcej niż Ci się wydaje, ale mniej niż im się wydaje.
----------------
Moja stronka: http://linux.media-soft.pl/
ODPOWIEDZ