Gå til innhold

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


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet

Takk skal du ha. Fikk det ikke til å virke sammen med resten av scriptet. Skal se på det i morgen. Men jeg ser ihvertfall hvordan jeg skal komme videre med dette.

Skrevet

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

 

:)

Skrevet
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.

Skrevet (endret)

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
Skrevet

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.

Skrevet
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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...