Jump to content
Finanzamt

Script / "gesperrte" Dateien generell; speziell Robocopy

Empfohlene Beiträge

Moinmoin,
Vorab: Um Scripts geht es nur am Rande ... bzw. um die Frage, wie wir beim Scripten damit umgehen, dass Dateien "irgendwie" gesperrt sind.
Bsp: Ziele meiner Datensicherung sind revolvierend drei interne und drei externe Devices und ich verwende Robocopy wählbar inkrementell /XO oder komplett /MIR, alles wird protokolliert und ich kann angeben, ob nach der Sicherung Shutdown ausgelöst wird oder nicht. Fazit: Alles bestens, wäre da nicht meine von Zeit zu Zeit mich ereilende Schusseligkeit. U.A. von der Datensicherung erfasst wird ein VeraCrypt-Container. Habe ich den Container nicht vor der Sicherung dismounted, bleibt RoboCopy bei dauerhaften Versuchen stehen, die Datei ins Ziel zu schaufeln. Habe ich z.B. eine OpenOffice-Datei offen (was angesichts eines möglichen Shutdowns genauso schusselig ist), stört das Robocopy nicht und nimmt halt die in der Quelle  gespeicherte Datei.
Weiß wer von Euch, ... wie ich Robocopy dazu kriege, einfach nur die in der Quelle (zuletzt) gespeicherte Version ins Ziel zu befördern? ... eine Alternative? ... was ich mal checken könne?

Lösungen wie Timer laufen lassen, "wenn zu lange", "dann Abbruch", "dann Protokoll", "dann Neustart mit exclude" oder eine Lösung mit Schattenkopie (generell verwenden, das "Original" excludieren, Schattenkopie im zweiten Aufruf kopieren lassen) fühlen sich für mich was nach BastelEi an.

Dankeschön und Gegrüßt!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Schau dir mal die Parameter /R und /W an.

vor 13 Minuten schrieb Finanzamt:

Weiß wer von Euch, ... wie ich Robocopy dazu kriege, einfach nur die in der Quelle (zuletzt) gespeicherte Version ins Ziel zu befördern? ... eine Alternative? ... was ich mal checken könne?

Den Satz verstehe ich nicht. Wenn die Datei blockiert ist, wie soll sie dann kopiert werden?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Klar, mit /R UndOder /W lässt sich verhindern, dass die Sache bis zum ersten Guck am nächsten Morgen durchläuft. Aber gesichert ist die Datei dann nicht.

Angenommen, Du hast tagsüber viel mit der Datei / dem Containerinhalt gemacht, sie/ihn auf der Festplatte immer wieder gespeichert und im Veracyptfall vergessen, zu dismounten: Dann ist auf der Platte ein aktuellerer Stand als auf der gestrigen Sicherung.

Ich will also definitiv die "blockierte" Datei kopieren. Dass "blockiert" nicht "blockiert" ist, es also durchaus Unterschiede gibt, zeigt schon die Schattenkopiegeschichte. Auch wenn Du z.B. eine Textdatei geöffnet hast und von einer anderen Kiste aus die gleiche Datei öffnest, bekommst Du i.d.R. die Alternativen angeboten, die Datei RO oder als Kopie zu öffnen. In beiden Fällen wird aber auf das zugegriffen, was unabhängig vom Bearbeitungsstand im Speicher zuletzt auf die Platte geschrieben wurde. Und darum geht es mir.

Gegrüßt!

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Benutze eine Datensicherungssoftware, die einen VSS-Snapshot erzeugen kann. Allerdings kann es dann sein, dass die  Datei danach  inkonsistent ist.

Robocopy ist keine Backup-Software.

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hi,

 

ich hatte seinerzeit mal ein Script gebaut um erst per VSS einen Snapshot zu erstellen und dann aus dem Snapshot zu kopieren.

Falls Interesse da ist, suche ich mal "intensiver" nach dem Script.

 

Gruß

Jan

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

@Zahni: Klar, da stimme ich Dir zu - Robocopy ist keine Backup-Software. Wenn es allerdings ausschließlich darum geht, Dokumente zu sichern, ist man ja auch vom "Backup"-Begriff einiges entfernt. Und wenn Du darauf beschränkt was gegen den Hauptfehler (Datei selbst zerdeppern) unternehmen willst, haben "einfache" Kopien für mich den entscheidenen Vorteil, ganz problemlos wieder an die letzte "noch in Ordnung" Datei zu kommen. (Ausreichende Anzahl revolvierender Ziele vorausgesetzt).

 

Speziell in meinem Fall habe ich den Wald vor lauter Bäumen nicht gesehen: Wenn die Sicherung am offenen Container hängen bleibt (bleiben kann), sollte ich mich darum kümmern, das das Dingen geschlossen wird und mit ...\veracrypt /d gleich zu Beginn des Scriptes dafür sorgen, das Robocopy nix zu meckern hat. Dann gibt es auch keine Probleme mit Inkonsistenzen.

 

Auf der anderen Seite kann ich mir vorstellen, dass z.B. andere "Containerartige" Dateien (z.B. .PST) ähnliche Probleme verursachen können. Und warum eine auf Platte gespeicherte Datei das eine Mal kopiert oder schreibgeschützt geöffnet werden kann, bzw. wann eine Datei nur auf Dateiebene und wann auf mehr (was eigentlich?) gesperrt ist - das ist evtl. was für lange Winterabende und vor allem was für einen anderen Thread.

 

Euch allen vielen Dank und einen richtig runden Tag,
Gegrüßt!


PS. @Testperson: Auch wenn ich die Shadowsachen für mein (Ex-) Prob ausgeschlossen hatte, wäre ich sehr daran interessiert. Und weil ich denke, dass ich diesbezüglich nicht der einzige bin: könntest Du es (vlt. in einem neuen Thread) posten?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Schau es dir / Schaut es euch erstmal an, dann kann man sehen, ob ein Thread dafür lohnt ;)

#Variabeln definieren / initialisieren
$DatenLW = "C"
$SnapshotPfad = $DatenLW + ":\1_Snapshot"
$Sync = "C:\install\sync\sync.exe" #https://technet.microsoft.com/de-de/sysinternals/bb897438.aspx
$CMD = "$env:ComSpec"

#Vorsichtshalber Daten aus Cache auf Festplatte schreiben
Write-Host "Festplatten Cache auf Disk schreiben.."
Start-Process $Sync $DatenLW -Wait

#VSS Snapshot per WMI Objekt erstellen
Write-Host "VSS Snapshot von Laufwerk " $DatenLW ":\ erstellen.."
$vss1 = (gwmi -List Win32_ShadowCopy).Create(($DatenLW + ":\"), "ClientAccessible")
$vss2 = gwmi Win32_ShadowCopy | ? { $_.ID -eq $vss1.ShadowID }

#VSS Snapshot mounten und im Dateisystem bereitstellen
Write-Host "VSS Snapshot unter " $SnapshotPfad " bereitstellen.."
$dir  = $vss2.DeviceObject + "\"
$Schalter = "/c mklink /d " + $SnapshotPfad + " " + $dir
Start-Process $CMD $Schalter -Wait

#Kopiervorgang

#Snapshot löschen und Link entfernen
Write-Host "Löschen des VSS-Snapshot.."
"vssadmin delete shadows /Shadow=""$($vss2.ID.ToLower())"" /Quiet" | iex 
$Schalter = "/c rmdir " + $SnapshotPfad
Start-Process $CMD $Schalter -Wait

P.S.: Das waren recht frühe Schritte im Bereich PowerShell; Es wurde viel zusammengegooglet; Man könnte es sicherlich eleganter lösen :)

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×