14. juli 2009 - 10:49Der er
6 kommentarer og 1 løsning
Delphi - programmering af back-up program
Jeg vil lave et backup program i Delphi. Programmet skal kunne følgende:
1. lave kopi af filer/mapper incl undermapper med indhold 2. der skal laves test på destination filen før den overskrives, der må kun overskrides hvis destinationsfilen er ældre end copy filen. 3. Filnavne skal selvfølgelige være ens, ligeledes skal fil data mm 4. sammenlign source og destination filer er ens 5. check om plads på destination drev - f.eks DiskFree
Derfor ønsker jeg at få information om følgende punkter:
a. copy af files funktion der med fordel kan benyttes b. check for sidste version af filen - f.eks brug af FileAge c. sammenligning af filer efter kopi
Hvis det er et versioneringsværktøj du har brug for: Hvad med SVN (og TortoiseSVN) eller Git? Begge er OpenSource (sidstnævnte er lavet af Linus selv) og håndterer snildt cirkusset med at holde styr på source-filerne. Bevares, man skal læse lidt for at sætte det op på en server, men det er besværet værd.
Jeg bruger SVN og Tortoise på mit arbejde. Det fungerer fint. Ideen med dette her er at kunne lave backup af alle mine filer der er værd at gemme. Det kan være billeder, dokumenter, programmer osv. Så derfor vil jeg lave et program der gemmer mapper jeg har valgt med jævne mellemrum. Jeg er klar over at jeg sikkert kunne finde et program der ville kunne dette på nettet, men jeg ønsker 100 % kontrol så jeg kan lave det lige som jeg ønsker. Jeg har faktisk lavet den "hårde del" og mangler nu kun brugergrænsefladen. Til selve kopi delen af filer har jeg benyttet Delphi - TFileStream.
Det med kontrollen kan du vel stadig styre med filernes "Archive"-bit. Alt det du ikke vil have med fjerner du flaget på, eksempelvis "attrib -a *.dcu /s"
... men hvis du vil lave det i Delphi er det vel meget forståeligt. Der er ingen der gider bat/cmd-filer længere.
Hvad TFileStream angår så kan du bruge Windows' Win32 funktioner såsom CopyFile eller CopyFileEx.
path := 'c:\*.*'; // f.eks. error := findfirst(path, faanyfile, srec); while error=0 do begin // oprindelige fil alder i srec.time // sammenlign med fileage på backupfil error := findnext(srec); end; findclose(srec)
c) Jeg forstår ikke rigtigt dette punkt, vil du være sikker på at filen er blevet kopieret, eller hva ??
ibhe: Der bliver svaret på spørgsmålet. Jeg synes bare ikke ideen er så god, at han skal slippe for alternativer. Den opmærksomhed giver jeg hans spørgsmål. Kan slet ikke se dit svar bringer ham nærmere en løsning for:
ad a. Jeg nævnte selv at man kunne benytte disse to funktioner og slippe for TFileStream. I Delphi er de mappet til "menneskelige" datatyper, men det er det samme; hvilken man får fat i (med ctrl-mellemrum) varierer.
ad b. Tror nok fedtore er i stand til at copy-paste fra Delphi-hjælpeteksten - og yderligere smække det i en try-finally. Din idé med fileage er nogenlunde, men det vil være hurtigere at kigge på archive-flaget i stedet (som jeg også skrev). Flaget er der til det samme.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.