Portál AbcLinuxu, 12. května 2025 06:42

Dotaz: Skript, který bude kopírovat pouze změněné soubory

22.6.2006 12:43 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Skript, který bude kopírovat pouze změněné soubory
Přečteno: 297×
Odpovědět | Admin
Zdravím,

potřeboval bych synchronizovat jeden adresář, který je připojen pomocí NFS (s pomalou odezvou) s lokálním adresářem. Přesněji, aby se změněné soubory automaticky (resp. na můj příkaz) dostaly (nakopírovaly, aktualizovaly) na ten sdílenej disk.

Mohl bych použít cp, ale má to háček - tento program začne porovnávat všechny časy souborů, tedy v podstatě začne zbytečně stahovat hromadu informací z NFS disku - v podstatě musí projít celou strukturu. Je to pomalé. Stejně se chová rsync, když nepoužiju rsync-server (nevím, jestli ten by to řešil, nicméně asi jej na server nemohu nainstalovat).

Jelikož ten vzdálený adresář nikdo nebude měnit, stačil by mi skript, který by si lokálně uchovával časy a velikosti vzdálených souborů a podle potřeby je tam aktualizoval.

A to je právě můj dotaz - nechce se mi nic podobného psát. Nevíte o nějakém skriptíku, který by tohle řešil? Díky...
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.6.2006 12:50 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
rsync?
22.6.2006 12:51 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
Ano mate pravdu jsem blb a nectu dotaz. Ale s rsyncem mam dobre zkusenosti.
23.6.2006 09:37 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
no a precitajte si otazku este raz :-)

autorovi sa nepaci, ze tieto programy stahuju a prechadzaju celu strukturu zdrojoveho adresara.

ale ako inak zistit modifikovane subory, to fakt neviem

mozno by mu pomohlo, ak si napise vlastny skript, ktory bude z cronu na NFS serveri prechadzat a zapisovat cas poslednej modifikacie do suboru, co vsak v konecnom dosledku na trafike neusetri. rsync server robi v podstate toto iste.

22.6.2006 16:16 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak nakonec mozna odpovim :-)

find adresarkdehledat -type f -mmin -predkolikaminutamijsemtopustilnaposled -exec cp {} cilovyadresar{} \;

To zkopiruje jen soubory, ktere byli modifikovane pred dobou mensi nez zadanou (to minus pred cislem je nutne). Problem, bude s adresarovou strukturou. Bohuzel jsem neprisel na to, jak find presvedcit, aby nasel adresare vytvorene po zadane dobe a dobu pred kterou byli modifikovany pouzit nelze protoze ta se meni i kdyz do nich neco zapisu. Prinejhosim by se dalo pustit podobne, ktere by vytvorilo adresare, ktere byli memeny, to ale muze rvat, ze uz existuji.

find adresarkdehledat -type d -mmin -predkolikaminutamijsemtopustilnaposled -exec mkdir -p cilovyadresar{} \;
22.6.2006 21:46 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
díky (bump)
23.6.2006 09:18 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash
TIMESTAMP=/tmp/cpio-sync-00$2.tmp
find . \( -name '.svn' -prune \) -o -type f \
-newer $TIMESTAMP -print | cpio -pdmvu $1
touch $TIMESTAMP
Later --- Lukáš Zapletal
Dalibor Smolík avatar 23.6.2006 13:29 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Skript, který bude kopírovat pouze změněné soubory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já to řeším dost primitivně: do skriptu zadám příkaz ke kopírování
cp -r -u /puvodni/adresar /novy
a v souboru crontab dám příkaz např. provést úkon každou hodinu ..
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.

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.