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

Linux - bash script - podmínka IF obsah adresářů je stejný (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

ODPOVĚĎ


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ů

Show english version

Související obsah

linux

bash

terminal

diff

sync

Komentáře

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

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.