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

Dotaz: script-synchronizace adresaru

9.12.2011 20:09 jidas
script-synchronizace adresaru
Přečteno: 479×
Odpovědět | Admin
Dobrý den s linuxem (ubuntu) zacinam a spise se s nim zatim jen seznamuju.Uz ted bych ale potreboval jednu praktickou vec ktera se asi da resit skriptem.Na win sem tohle delal rucne (i kdyz to mozna jde pres prikazovou radku)ale na linuxu to urcite pujde vyresit elegantneji.Chci aby jeden adresar obsahoval krom jinych souboru ktere uz v sobe ma take vsechny soubory z jineho adresare.Proste ze na zacatku zadam cilovy a zdrojovy adresar,pote se zjisti obsah adresaru a pokud v cilovem adresari chybi nejaky soubor ze zdrojoveho tak se do ciloveho zkopiruje. Se skriptovanim a prikazy nemam vubec zadne zkusenosti ale pokusil sem se aspon o nejakou "kostru":

#!/usr/bin/env bash

echo -n "Zdrojovy adresar: " read zdroj

echo -n "Cilova cesta: " read cil

if []; then

fi

podle doporuceni sem hledal v ruznych manualovych strankach ale "diky" anglictine a zadnym zkusenostem s prikazy vubec nevim jak ten if napsat. chci se to doucit casem ale ted ten cas absolutne nemam a tahle vec by se mi hodila uz ted at to nemusim delat pres gui stokrat dele. Nenasel by se teda nekdo s napadem jak to vyresit scriptem? Diky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.12.2011 20:37 Ash | skóre: 53
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
rsync zdrojovyadresar/ cilovyadresar
9.12.2011 20:53 Tomáš Heger (geckon) | skóre: 62 | Praha/Valašsko
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak říká Ash, na tohle se hodí rsync. Připojím odkaz na užitečný místní článek.
9.12.2011 20:57 Voransky | skóre: 8 | Český Krumlov
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
osobně bych z toho script úplně vynechal a pužil rsync, který dělá přesně to co potřebujete:

rsync -av /odkud/ /kam

rekurzivně zkopíruje obsah adresáře odkud kam, pokud přidáte možnost -u nebude přepisovat soubory, které jsou v cíli novější..

Pokus si to přidáte do crontab, získáte tak automatickou synchronizaci adresářů. Celé to lze použít i pro synchronizaci se vzdáleným úložištěm.
9.12.2011 20:57 Voransky | skóre: 8 | Český Krumlov
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
pozdě :-)
9.12.2011 21:02 Kit
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když se nám svěříš, na co to vlastně potřebuješ, možná ti poradíme něco lepšího. Možná jen potřebuješ nějaký vhodný verzovací systém, který se ti bude starat o zálohy včetně historie.
9.12.2011 21:38 jidas
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Diky za ten rsync.Zatim to zkousim bez skriptu,jen jako prikaz a kdyz napisu :

rsync soubor1 / cilAdresar

tak vse funguje a soubor - soubor1 - se zkopiruje do ciloveho adresare(pokud se tam uz nachazi tak se "nestane nic"). Pokud ale napisi:

rsync slozka1 / slozka2

tak uvedeny prikaz neprovede to co chci a v cilove slocze se nic nezmeni. jde tedy nejak udelat aby se synchronizovalo slozka/slozka ?tedy aby se synchronizovaly vsechny soubory ze zdrojove slozky
dekuji
9.12.2011 21:49 Ash | skóre: 53
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
rsync zdrojovaslozka/ cilovaslozka
ale to už se opakuji...

Dávejte si pozor na lomítka, pokud píšete příkazy tak jak jsou ve vašem příspěvku, máte je úplně špatně, není jasné jestli patří ke složce nebo k souboru. Vámi popisované příklady nemohou vůbec fungovat. Ten příkaz jak jsem uvedl má dva parametry, lomítko je součástí jednoho z nich. Není to něco lomeno něco. Přečtěte si také manuálovou stránku (man rsync).
9.12.2011 21:50 Kit
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
A ty si myslíš, že ty parametry -av jsou tam jen pro srandu? A proč dáváš mezi zdroj a cíl lomítko? Podívej se pořádně, jak se ten příkaz píše.
16.12.2011 10:56 CET
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
jeste bych prihodil -u - pro obosmernou synchronizaci je to dost dulezite!
16.12.2011 12:24 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Nevím, jaké jsou zkušenosti s obousměrnou replikací přes rsync, ale pro tento účel nám již roky výborně funguje unison.
16.12.2011 14:55 Ash | skóre: 53
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Dobrá připomínka, v zadání totiž bylo, cca něco jako že "pokud v cílovém adresářy nejsou nějaké soubory ze zdrojového, tak se tam zkopírují". Takže pokud bychom se měli držet zadání, chtělo by to spíš nějaký jiný přepínač, který neaktualizuje existující (ani starší ani novější) soubory, pouze doplní neexistující. (Nevím jaký switch to je, tuhle možnost nepoužívám.)
16.12.2011 17:42 Voransky | skóre: 8 | Český Krumlov
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
pravda, potom by to chtělo přidat --ignore-existing
9.12.2011 22:12 jidas
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dekuji za reakce.vyresil sem to tedy takhle:

rsync -av sl/ sl2

ty lomitka me pletou,porad to vidim jako deleni a z programovani sem zvykly neresit mezery pred nebo za operatorama(vim,to lomitko neni operator :-) )
9.12.2011 22:21 Kit
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Ta lomítka jsou důležitou součástí parametrů. Možná by bylo vhodné si o rsync přečíst nějaký článek.
13.12.2011 22:00 vojjtik
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Ahoj,, měl bych dotaz potřebuju poradit se skriptem na synchronizaci adresářů. Když zadám cestu, tak mi to vyhodí, že nebyla nalezena nevíte kde je chyba nebo jak by to mělo být správně?

#!/bin/bash echo "Zadejte umisteni zdrojoveho adresare" read zdroj echo"zadejte umisteni ciloveho adresare" read cil rsync -avv $zdroj: /$cil echo"Synchronizace byla dokoncena" exit 0;
13.12.2011 22:17 vojjtik
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
oprava

#!/bin/bash echo "Zadejte umisteni zdrojoveho adresare" read zdroj echo"zadejte umisteni ciloveho adresare" read cil rsync -avv $zdroj$cil echo"Synchronizace byla dokoncena" exit 0;

13.12.2011 22:35 l4m4
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Přečti si znovu diskusi. Není jedno, kam kde napíšeš nebo nenapíšeš jaké lomítko, mezeru a podobně. V prvním příkladu jsou navíc lomítko a dvojtečka. V druhém schází mezera mezi zdrojem a cílem a mezi echo a uvozovkami. Odpovídá alespoň jedno z toho skutečnosti, nebo je to vlastně ještě jinak? Nevložils výpis do <pre>, takže těžko říci cokoli...
13.12.2011 22:54 Kit
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Navíc zapomněl dát $zdroj a $cíl do uvozovek.
9.12.2011 22:39 Voransky | skóre: 8 | Český Krumlov
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
nj :-)

jenže tady je to součást cesty

"adr/ záloha" si můžeš přeložit jako: obash adr zkopíruj do záloha
"adr záloha" zas jako: adr zkopíruj do záloha, tzn v záloha se vytvoří i adresář adr...

přpínač -a říká, že má kopírovat i obsah podadresářů atd. a ovlivňuje zacházení s odkazy a právy
-v nechá zobrazit co, že se vlastně děje

rsync je ale dosti robusní nástroj a dá se použít ke spoustě věcí, takže opravdu doporučuji přečíst nějaký článek...
16.12.2011 17:37 CET
Rozbalit Rozbalit vše Re: script-synchronizace adresaru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dovolim si rejnpout: tohle je taky zadani z nejaky SS nebo VS? Dost se to podoba http://www.abclinuxu.cz/poradna/linux/show/350182

Pokud ano, misto zaplavovani poradny skolnima prikladama byste se mohli domluvit, zkusit procist manualy a probrat to po IRC (vy teda spis pres FB) a pak prijit aspon spolecne s jednim dotazem, kdyz uz budete mit aspon precteny manualovy stranky tech zakladnich prikazu (v tomto pripade man bash a man rsync).

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.