Deployment Artikel

OnlyIfChanged, Zeitstempel und Hashvergleich richtig einsetzen.

Die wichtigste fachliche Entscheidung in deiner Funktion ist nicht das Kopieren selbst, sondern die Frage, wann eine Datei als unveraendert gilt. Genau hier entscheidet sich, ob ein Deployment schnell, korrekt und nachvollziehbar bleibt.

Nur Zeitstempel und Groesse

Das ist schnell und fuer viele Deployments ausreichend. Es ist sinnvoll, wenn die Quelle sauber gebaut wird und Zeitstempel verlaesslich transportiert werden.

Hashvergleich

Das ist teurer, aber belastbarer. Gerade bei sicherheitsrelevanten Dateien, Konfigurationsartefakten oder zweifelhaften Build-Prozessen ist Hashvergleich oft die sauberere Wahl.

PowerShell
# Schnell und oft ausreichend
Copy-WithProgress `
  -CopySource $src `
  -CopyDestination $dst `
  -LogFile $log `
  -OnlyIfChanged

# Langsamer, aber belastbarer
Copy-WithProgress `
  -CopySource $src `
  -CopyDestination $dst `
  -LogFile $log `
  -OnlyIfChanged `
  -UseHashComparison `
  -HashAlgorithm SHA256

Wann Zeitstempel reichen

Wenn du paketierte Quelldateien kontrollierst, Build und Quelle stabil sind und das Ziel nur effizient aktualisiert werden soll.

Wann Hashes besser sind

Wenn identische Groesse und Zeitstempel nicht genug Vertrauen schaffen, etwa bei Konfigurationen, Skripten oder sicherheitsrelevanten Dateien.

Preis des Hashvergleichs

Mehr I/O, mehr CPU und mehr Laufzeit. Deshalb sollte Hashing bewusst und nicht reflexhaft aktiviert werden.

Starker Punkt der Funktion

Sie macht die Vergleichsstrategie ueber Parameter explizit. Damit bleibt im Deployment nachvollziehbar, warum Dateien kopiert oder uebersprungen wurden.