AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows 7 änderungsdatum

Ein Thema von WizoHulk · begonnen am 18. Jan 2011 · letzter Beitrag vom 20. Jan 2011
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#1

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 13:17
Wieso ist das keine schöne Lösung? Willst Du einen Ordner mit 100 GB kopieren, nur weil eine Datei mit 100 KB dazugekommen ist?

[edit] Unter Vista/Win7 gibt es Robocopy, das ist noch einen Tacken ausgefuchster. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 13:34
Robocopy kenne ich nicht, aber wenn ich WizoHulk richtig verstanden habe, reicht eine Zeile xcopy (oder mehrere, wenn es verschiedene Verzeichnisse sind)
Man muss sich ja nicht unnötig quälen.
Gruß, Jo
  Mit Zitat antworten Zitat
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 13:40
hmmm habe mir grad ma was zu hashwerten angeschaut, das scheint aber auch net die richtige lösung zu sein.

Ich habe in ELOOffice meine Dokumente die er kopieren soll, aber bei übern nen paar hunder dokumente ist das warscheinlich mühsam jeden einzelnen Order durchzukämmen und zu schaun ob dort was neues hinzugekommen ist.

Und bei meheren Verzeichnissen die er kopieren soll (z.b. D:\EloOffice, E:\Musik, F:\Bilder, ...)
Die zu kopierenden ordner wären Maximal 3 - 4 Gb groß.

Geändert von WizoHulk (18. Jan 2011 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 13:52
Ich habe in ELOOffice meine Dokumente die er kopieren soll, aber bei übern nen paar hunder dokumente ist das warscheinlich mühsam jeden einzelnen Order durchzukämmen und zu schaun ob dort was neues hinzugekommen ist.
Das machen auch die professionellen Kopiertools wir RoboCopy und Co. Ich finde, das ist auf jeden Fall schneller als immer alles zu kopieren, wenn was neues da ist.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#5

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 13:56
Das sage ich ja auch die ganze Zeit. Wer den verlinkten Wikipedia-Artikel gelesen hat, der weiß auch, dass das Archiv-Attribut ja extra für inkrementelle Sicherungen gedacht ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 14:07
Und bei meheren Verzeichnissen die er kopieren soll (z.b. D:\EloOffice, E:\Musik, F:\Bilder, ...)
Die zu kopierenden ordner wären Maximal 3 - 4 Gb groß.
Also falls das unklar ist, 3 Hauptverzeichnisse in Deinem Fall wären 3 Zeilen für xcopy (und wahrscheinlich auch robocopy), die Unterverzeichnisse durchsucht, vergleicht, kopiert xcopy dann auf Wunsch bzw. Befehl (Schalter /E oder so).
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#7

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 15:23
Und wenn es unbedingt mit Delphi sein muss, dazu habe ich mir mal ein paar Gedanken gemacht (VORSICHT: Code ist komplett ungetestet):
Delphi-Quellcode:
uses StrUtils;

procedure IncrementalBackup(SrcDir, DestDir: string; ErrorLog: TStrings;
  CopyEmptyDirs: Boolean = false);

  procedure Log(const Msg: string);
  begin
    if Assigned(ErrorLog) then
      ErrorLog.Add(Msg);
  end;

const
  faNewAnyFileEx = $00017FFF; // erweitertes faAnyFile aus der DP
  INVALID_DIRS =
    'Zielverzeichnis darf nicht im Quellverzeichnis enthalten sein';
var
  SearchRec: TSearchRec;
  DestPath: string;
  AttrCode: integer;
begin
  if AnsiContainsText(SrcDir, DestDir) then
    raise Exception.Create(INVALID_DIRS);
  SrcDir := IncludeTrailingPathDelimiter(SrcDir);
  DestDir := IncludeTrailingPathDelimiter(DestDir);
  if FindFirst(SrcDir + '*.*', faNewAnyFileEx, SearchRec) = 0 then
    try
      repeat
        if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
          begin
            // Verzeichnis gefunden
            if (SearchRec.Attr and faDirectory) = faDirectory then
              begin
                DestPath := DestDir + SearchRec.Name;
                // ggf. anlegen
                if CopyEmptyDirs then
                  begin
                    if not(DirectoryExists(DestPath) or
                      ForceDirectories(DestPath)) then
                      Log(DestPath + ' konnte nicht angelegt werden.');
                  end;
                // Rekursiver Aufruf
                IncrementalBackup(SrcDir + SearchRec.Name, DestPath, ErrorLog,
                  CopyEmptyDirs);
              end
              // Datei gefunden
            else
              begin
                DestPath := DestDir + ExtractFilename
                  (ExcludeTrailingPathDelimiter(SrcDir));
                // nur bei gesetztem Archiv-Attribut oder wenn nicht vorhanden
                if ((SearchRec.Attr and faArchive) = faArchive) or
                  not FileExists(DestDir + SearchRec.Name) then
                  begin
                    // Zielverzeichnis ggf. anlegen
                    if not(DirectoryExists(DestPath) or
                      ForceDirectories(DestPath)) then
                      Log(DestPath + ' konnte nicht angelegt werden.')
                    else
                      begin
                        // Datei kopieren
                        if not CopyFile(PChar(SrcDir + SearchRec.Name),
                          PChar(DestPath + SearchRec.Name), false) then
                          Log(Format('%s: %s', [DestPath + SearchRec.Name,
                            SysErrorMessage(GetLastError)]))
                          // bei Erfolg Archiv-Attribut entfernen
                        else
                          begin
                            AttrCode := FileSetAttr(SrcDir + SearchRec.Name,
                              SearchRec.Attr and not faArchive);
                            if AttrCode <> 0 then
                              Log(Format('%s: %s', [DestPath + SearchRec.Name,
                                SysErrorMessage(AttrCode)]));
                          end;
                      end;
                  end;
              end;
          end;
      until FindNext(SearchRec) <> 0;
    finally
      SysUtils.FindClose(SearchRec);
    end;
end;
Ich hoffe, ich habe keinen groben Denkfehler gemacht, ansonsten bitte korrigieren.

[edit] Code nochmal durch den Formatter gejagt [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (18. Jan 2011 um 17:09 Uhr) Grund: AnsiContainsText mit AnsiContainsStr verwechselt
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#8

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 15:29
Nein, Denkfehler habe ich keine gefunden, auch beim 2. Mal Drüberschauen wurde mir die Verwendung von CopyEmptyFiles klar.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#9

AW: Windows 7 änderungsdatum

  Alt 18. Jan 2011, 15:48
Nun müsste man nur noch jemanden finden, der den Mut hat, das mal zu testen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz