Linux - bash script - podmínka IF obsah adresářů je stejný (if dir1==dir2)

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

Linux - bash script - podmínka IF obsah…

03.12.2019 napsal Stoupa

Vyřešeno Linux - bash script - IF condition comparing the contents of two directories (if dir1==dir2)
Ahoj, potřeboval bych do mého bash skriptu, který provádí přesun dat mezi dvěma linux stroji, přidat podmínku, která bude True, když dva adresáře (lokální a vzdálený) budou obsahovat ten samý obsah. Protože když se adresáře sesynchronizují, tak potřebuji data v tom zdrojovém adresáří odstranit a musím mít jistotu, že předtím je ověřeno, že data jsou skutečně do cílového adresáře zkopírována všechna. Díky

Zobrazit odpovědi

Nejlépe hodnocení uživatelé
Hanz

Počet UP: 5096

React: 215

Rusty

Počet UP: 2354

React: 100

OL3G

Počet UP: 1638

React: 60

Strosmajer

Počet UP: 496

React: 23

SYSTEM

Počet UP: 440

React: 23

Oxytocin

Počet UP: 298

React: 18

Hyacint

Počet UP: 40

React: 12

RE: Linux - bash script -…

11.12.2019 odpověděl Hyacint

Zkontrolováno

Dobrý den,

podmínka IF na to, zda je obsah dvou adresářů stejný (if dir1==dir2) může být provedena několika způsoby (neříkám, že jsou dokonalé, ale fungují):

1.) Využití funkce diff a počtu vrácených řádků



if [ `diff -rq dir1/ dir2/ | wc -l` != 0 ]; then
echo 'KO - dir1 != dir2'
else
echo 'OK - dir1 = dir2'
fi


2.) Použít dry run na rsync


- vrací rozdílné soubory
- dir musí končit lomítkem
rsync -rvnc dir1/ dir2/

sending incremental file list
code-150x150.jpg

sent 2,734 bytes received 20 bytes 5,508.00 bytes/sec
total size is 4,684,691 speedup is 1,701.05 (DRY RUN)


což by šlo aplikovat do podmínky IF takto (opět použít vrácené řádky):

if [ `rsync -rvnc dir1/ dir2/ | wc -l` == 4 ]; then
echo 'OK - dir1 = dir2'
else
echo 'KO - dir1 != dir2'
fi


3.) Určitě bude mnoho dalších způsobů

Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace