Portál AbcLinuxu, 10. května 2025 22:36

Dotaz: Porovnání souborů v adresářích

29.12.2017 20:09 MilanC | skóre: 16
Porovnání souborů v adresářích
Přečteno: 225×
Odpovědět | Admin
Ahoj,

mám adresář /UPDATE/ROOT_FS/, který má podadresáře etc, usr apod. V těchto adresářích mám několik souborů, které slouží pro aktualizaci systému.

Potřebuji projít všechny soubory v /UPDATE/ROOT_FS/* a porovnat proti /. Výstupem by měly být rozdílné soubory, na které se pak podívám a zesynchronizuji si to ručně. Porovnat se může obsahově, checksumem nebo i prosté mtime mi stačí. Zkoušel jsem to několika způsoby (diff, find...), ale vždy mi vyjíždí i ty soubory, které jsou v / ale které nemám v /UPDATE/ROOT_FS/.

Děkuji.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.12.2017 20:24 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: Porovnání souborů v adresářích
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mám tohle řešení, vypadá že funkční, ale třeba někdo nalezne lepší. :-)

diff -qr /UPDATE/ROOT_FS/ / | grep -i "differ"
29.12.2017 20:40 NN
Rozbalit Rozbalit vše Re: Porovnání souborů v adresářích
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash

cd /UPDATE/ROOT_FS/

for F in $(find * -type f)
do
	if ! diff "/UPDATE/ROOT_FS/$F" "/$F" > /dev/null
	then
		echo "Diff: $F"
	fi
done
29.12.2017 22:58 Dirka | skóre: 15 | blog: dirka12345
Rozbalit Rozbalit vše Re: Porovnání souborů v adresářích
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud to nepovazujes za uplnou picovinu, tak zkus GUI http://kdiff3.sourceforge.net/ lze "vypnout" diff dle ruznych parametru napr only in "b" (pro tebe /). Merge taky umi.
wamba avatar 30.12.2017 01:50 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Porovnání souborů v adresářích
Odpovědět | | Sbalit | Link | Blokovat | Admin
např. v adresáři /UPDATE/ROOT_FS/ spustíš následujicí one-liner
find . -type f|xargs sha256sum|sed 's/\B\.//'|sha256sum -c
pokud chceš na std. výstupu jen soubory, pak můžeš např. dodat grep a cut
find . -type f|xargs sha256sum|sed 's/\B\.//'|sha256sum -c|grep  'CHYBNÝ$'|cut -d':' -f1
This would have been so hard to fix when you don't know that there is in fact an easy fix.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.