fix: Platzhalter erkennen, statt den Rechner damit lahmzulegen
Der Heimrechner ist beim ersten Lauf haengengeblieben. Ursache:
d4rk_media-2026-08-11-2307.tar.gz 327030051 Archive, ReparsePoint
d4rk_media-2026-08-12-0430.tar.gz 352258706 4199968
4199968 = 0x401620:
0x400000 RECALL_ON_DATA_ACCESS beim Zugriff erst herunterladen
0x001000 OFFLINE Inhalt liegt nicht hier
0x000400 ReparsePoint
0x000200 SPARSE_FILE
0x000020 Archive
Der Nextcloud-Client hatte "virtuelle Dateien" aktiviert: im Ordner steht ein
Verweis mit der richtigen GROESSE, aber ohne Inhalt. robocopy fasst alle an,
und jedes Anfassen loest einen Download aus -- bei fuenf Archiven 1,7 GB auf
einmal, waehrend Windows blockierte.
Das Skript prueft das jetzt VORHER und bricht ab, ohne etwas zu kopieren oder
zu loeschen. Mit dem Hinweis, wo man es abstellt, und woran man es im Explorer
sieht: Wolken-Symbol statt gruenem Haken.
An einer Datei mit gesetztem OFFLINE-Attribut nachgemessen -- erkannt und
abgebrochen; ohne das Attribut laeuft es normal durch.
Die Lehre ist dieselbe wie den ganzen Tag: eine Groessenangabe ist keine Datei.
robocopy hat die 336 MB geglaubt, die dastanden, statt zu pruefen, ob sie da
sind.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -126,6 +126,44 @@ Gut "nach $zVoll"
|
||||
# Quellordner angleichen und dort geloeschte Dateien auch hier loeschen. Genau
|
||||
# das soll nicht passieren.
|
||||
|
||||
# -- Sind es ueberhaupt Dateien, oder nur Platzhalter? --------------------------
|
||||
#
|
||||
# DAS HAT EINEN RECHNER LAHMGELEGT. Der Nextcloud-Client kann "virtuelle
|
||||
# Dateien" anlegen: im Ordner steht dann ein Verweis mit der richtigen GROESSE,
|
||||
# aber ohne Inhalt. Wer so eine Datei anfasst, loest einen Download aus -- und
|
||||
# robocopy fasst alle an. Bei fuenf Archiven waren das 1,7 GB auf einmal,
|
||||
# waehrend Windows blockierte.
|
||||
#
|
||||
# Erkennbar an zwei Attributen:
|
||||
# 0x001000 OFFLINE -- Inhalt liegt nicht hier
|
||||
# 0x400000 RECALL_ON_DATA_ACCESS -- wird beim Zugriff nachgeladen
|
||||
#
|
||||
# Lieber abbrechen und es sagen, als die Maschine in die Knie zwingen.
|
||||
|
||||
Schritt 'Sind es echte Dateien?'
|
||||
$platzhalter = @(Get-ChildItem $qVoll -File -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.Name -match '\.(tar|db)\.gz$' -and ($_.Attributes -band 0x401000) })
|
||||
if ($platzhalter.Count) {
|
||||
Schlecht "$($platzhalter.Count) von $(@(Get-ChildItem $qVoll -File | Where-Object { $_.Name -match '\.(tar|db)\.gz$' }).Count) Archiven sind nur PLATZHALTER."
|
||||
Write-Host ''
|
||||
Warn 'Der Nextcloud-Client hat "virtuelle Dateien" aktiviert: im Ordner steht'
|
||||
Warn 'ein Verweis mit der richtigen Groesse, aber ohne Inhalt. Sie zu kopieren'
|
||||
Warn 'wuerde alles auf einmal herunterladen und den Rechner blockieren.'
|
||||
Write-Host ''
|
||||
Warn 'Im Explorer sieht man es am WOLKEN-Symbol neben der Datei; ein gruener'
|
||||
Warn 'Haken heisst "liegt wirklich hier". Windows 11 zeigt ausserdem an, wenn'
|
||||
Warn 'es gerade etwas nachlaedt.'
|
||||
Write-Host ''
|
||||
Warn 'Im Nextcloud-Client: Einstellungen -> Konto -> Drei-Punkte-Menue'
|
||||
Warn ' -> "Virtuelle Dateien deaktivieren"'
|
||||
Warn 'Danach laedt er im Hintergrund alles herunter -- mit Fortschritt und'
|
||||
Warn 'unterbrechbar. Erst wenn das durch ist, hat diese Abholung Sinn.'
|
||||
Write-Host ''
|
||||
Schlecht 'Abgebrochen. Es wurde nichts kopiert und nichts geloescht.'
|
||||
exit 1
|
||||
}
|
||||
Gut 'ja, alle Archive liegen wirklich lokal'
|
||||
|
||||
Schritt 'Kopieren (nur neue, nichts loeschen)'
|
||||
$zaehlen = { @(Get-ChildItem $zVoll -File -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.Name -match '\.(tar|db)\.gz$' }).Count }
|
||||
|
||||
Reference in New Issue
Block a user