Gå til innhold

Hvordan unngå overskriving med cp? [løst]


Anbefalte innlegg

Skal lage et script for backup av enkelte filer.

Scriptet benytter bl.a. denne:

 

find $KATALOG -name '*.rapport' -exec cp {} $BACKUP \;

 

Det viktigste her er at scriptet ikke skriver over filer i backupkatalogen med samme navn. Hvis filen allerede finnes, må den nye filen få nytt navn. F.eks. en ny endelse. *.rapport_ny.

Å kopiere med -i går ikke. Dette må kunne gå automatisk.

 

Kan noen hjelpe?

Endret av bobafett
Lenke til kommentar
Videoannonse
Annonse

Måtte jo prøve, fant ikke en smart one-liner, men kan jo hende det finnes. Dette funker i alle fall, en liten rekursiv funksjon :)

#!/bin/bash

function safe_cp {
   if [ -e $2/$1$3 ]
   then
       safe_cp $1 $2 $[ $3 + 1 ]
   else
       cp $1 $2/$1$3
   fi
}

for f in `find $KATALOG -name '*.rapport'`
do
   safe_cp $f $BACKUP
done

 

EDIT: Indenteringen ble vist ikke helt fin når vist i forumet (fikset).

Endret av LessThanJake
Lenke til kommentar
cp -u?
-u, --update

              copy only when the SOURCE file is  newer  than  the  destination

              file or when the destination file is missing

 

man cp

 

:)

8297027[/snapback]

 

Det går ikke. Den nye filen overskriver den gamle.

Poenget med scriptet er at ingen filer må overskrives.

Lenke til kommentar

Så målet er ikke å ha en verbatim 1-til-1 backup-kopi av den til enhver tid siste versjon av fila, men en slags versjonsbasert backup der backup-kopien av den nye versjonen av fila ikke overskriver den foregående backup-kopien?

 

Eller tenker du på overskrivingsproblemer pga ulike filer har samme filnavn og skaper navnerom-kollisjoner i backup-kopien?

Endret av kommers
Lenke til kommentar

Det som kan være et problem er at to personer ved en tilfeldighet gir samme filnavn til to forskjellige filer. Siden alle filer skal til samme backupkatalog, er det viktig at en fil ikke overskriver en annen.

Eller at en ny versjon av en fil ikke overskriver en eldre versjon.

Lenke til kommentar
cp -b tar backup av eksisterende filer med samme navn

8302019[/snapback]

 

Glimrende. Takk skal du ha. Og tenk at -b stod så langt oppe på man-siden.

Så etter å ha kjørt cp -b, er det bare å finne filer i backupkatalogen og bytte ut ~ med dato. Gjør dette i samme scriptet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...