Strona 1 z 1

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

: 2011-04-28, 18:12
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... :-)

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

: 2011-04-28, 19:57
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ł

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

: 2011-04-28, 22:16
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"; }'

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

: 2011-04-30, 16:10
autor: mina86
„Wygląda czytelniej ^.* ... hmm”
Ale nie działa, jeżeli jest dużo plików.

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

: 2011-05-01, 13:06
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?

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

: 2011-05-01, 13:36
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.

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

: 2011-05-01, 13:51
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".