Avatar billede fedtoere Praktikant
14. juli 2009 - 10:49 Der 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
Avatar billede michael-schou Novice
15. juli 2009 - 09:59 #1
Du kan nok finde inspiration her : http://www.eksperten.dk/spm/840662#reply_7176838 - til kopiering af filer + mapper.
Avatar billede hrc Mester
16. juli 2009 - 00:30 #2
Hvorfor bruger du ikke kommandolinjeprogrammet XCopy? Det kan vist stort set det du spørger om.
Avatar billede hrc Mester
16. juli 2009 - 00:33 #3
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.
Avatar billede fedtoere Praktikant
16. juli 2009 - 09:29 #4
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.
Avatar billede hrc Mester
16. juli 2009 - 10:50 #5
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.
Avatar billede ibhe Novice
21. december 2009 - 08:24 #6
Måske skal vi prøve at svare manden på hans spørgsmål, fremfor at komme med gode råd til alternative løsninger.

a)
I Delphi kan du kopiere en fil med

  copyfile(frafilnavn, tilfilnavn, overskriv);

frafilnavn og tilfilnavn er filnavne (strings) og overskriv er en boolean - Du kan finde mere om denne funktion i pascal hjælp

b)
Du kan f.eks. løbe de filer der skal backup'pes igennem på følgende måde:

error : integer;
srec : tsearchrec;
path : string;

  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 ??
Avatar billede hrc Mester
21. december 2009 - 23:22 #7
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester