Kirjoittaja Aihe: Vertaa kansioita A ja B, kopioi kansioon C  (Luettu 1990 kertaa)

ooo

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vertaa kansioita A ja B, kopioi kansioon C
« : 03.07.10 - klo:20.42 »
Miten voisin terminaalissa tehdä seuraavan:

Vertaa rekursiivisesti kansioita A ja B. Kopioi (tai siirrä) kansioon C ne tiedostot, jotka ovat A:ssa, mutta eivät B:ssä. Säilytä kansiorakenne kopioitaessa C:lle.


Huomaa, että tässä en ole lähtökohtaisesti kiinnostunut tiedoston aikaleimasta jos tiedosto on A:ssa ja B:ssä, vaan tarkoitus on lähtökohtaisesti tarkastella tiedostoja vain periaatteella onko tiedostoa olemassa A:ssa, mutta ei B:ssä.


Esim. rsync-pohjainen ratkaisu olisi mieluisa. Paha epäilykseni on, että jos tämän saa tehtyä vain jollain find-komentoviritelmällä, niin kuitenkin erikoismerkkiset tiedostonimet tms. jää toimimatta  ;)
______________________________
Minäkö tyhmä? Nyt en ymmärrä.

mikko_h

  • Käyttäjä
  • Viestejä: 202
    • Profiili
Vs: Vertaa kansioita A ja B, kopioi kansioon C
« Vastaus #1 : 05.07.10 - klo:21.26 »
Koodia: [Valitse]
rsync -vr --dry-run A/ B/ | tail -n +2 | head -n -3 | gawk '{ print "+ " $0 }' > diff-list ; echo -e "+ */\n- *" >> diff-list

rsync -vr --prune-empty-dirs --include-from diff-list  A/ C/

Tuo on varmaan moneltakin osin epätäydellinen viritys. Ainakin diffin saanee aikaiseksi jotenkin elegantimminkin. Rsyncin toimintaa aikaleimojen yms. suhteen voi säätää vipstaakeilla, en perehtynyt sen tarkemmin. Rsyncin filtterisääntösyntaksi on myös sen kaltainen, että alihakemistojen kanssa voi varmaan syntyä odottamattomia efektejä. Kokeilin Fedora 13:ssa, jossa on bash-4.1.7, rsync-3.0.7 ja gawk-3.1.8.

cabaro

  • Käyttäjä
  • Viestejä: 131
    • Profiili
Vs: Vertaa kansioita A ja B, kopioi kansioon C
« Vastaus #2 : 05.07.10 - klo:21.28 »
Koodia: [Valitse]
rsync -avr --compare-dest=../B A/ C/ && rsync -av --compare-dest=../A B/ C/
Koodia: [Valitse]
rsync -avr --compare-dest=../B A/ C/
ylempi vertaa molemmat hakemistot A ja B toisiaan vastaan ja kopioi toisesta puuttuvat hakemistoon C.
alempi katsoo vain B:stä puuttuvat A:n tiedostot ja kopioi hakemistoon C

Toivottavasti auttoi :)
« Viimeksi muokattu: 05.07.10 - klo:21.32 kirjoittanut cabaro »

ooo

  • Käyttäjä
  • Viestejä: 120
    • Profiili
Vs: Vertaa kansioita A ja B, kopioi kansioon C
« Vastaus #3 : 07.07.10 - klo:19.07 »
Kiitokset molemmille vastauksesta! Cabaron ratkaisu oli hyvin yksinkertainen ja kun kokeilin, niin sehän toimi juuri niinkuin toivoin! Kiitoksia, kiitoksia oikein paljon!
______________________________
Minäkö tyhmä? Nyt en ymmärrä.