Machen Sie das Erstellen symbolischer Links rückgängig, indem Sie das Original zurückkopieren, die Datei umbenennen und den Link löschen

Machen Sie das Erstellen symbolischer Links rückgängig, indem Sie das Original zurückkopieren, die Datei umbenennen und den Link löschen

Ich habe ein Windows 7-Dienstprogramm verwendet, um Byte für Byte doppelte Dateien zu löschen und sie durch einen symbolischen Link zu ersetzen, bevor mir klar wurde, dass der symbolische Linktyp in unserer Unternehmensdomäne nicht zulässig ist. Ich muss alle vorgenommenen Änderungen rückgängig machen können, aber das Programm bietet dazu keine Möglichkeit.

Ist es möglich, eine Art Skript zu schreiben, das die Links findet, die Datei findet, den Link entfernt und die Datei zurück in den Ordner kopiert und sie so umbenennt, dass sie dem Namen des Links entspricht? Oder vielleicht eine Software, die dies tut?

Vielen Dank für jede Hilfe.

Antwort1

In solchen Situationen zahlt es sich wirklich aus, eine gut geplante und gepflegte Backup-Strategie zu haben. Wenn das in Ihrem Unternehmen der Fall ist, nutzen Sie sie.

Was Sie getan haben, ist keine gute Methode, um Platz zu sparen. Betrachten Sie den folgenden Anwendungsfall:

  1. Der Benutzer kopiert Dateien aus der Deptx-Freigabe, um sie für die Bearbeitung vorzubereiten
  2. Sie werfen ihre Kopien weg und erstellen symbolische Links zu den Ursprüngen
  3. Sie modifiziert die Originale, die andere noch für ihre Arbeit benötigten
  4. ...

Wenn Sie so wenig Speicherplatz haben, sollten Sie am besten einen Geschäftsplan für den Kauf von zusätzlichem Speicherplatz erstellen. Idealerweise eine Lösung, die Deduplizierung auf Blockebene unterstützt. Wenn Ihr vorhandenes Gerät Deduplizierung bietet, hätten Sie eine Änderungsanforderung zur Genehmigung einreichen können, um diese zu implementieren – aber diese Zeit ist vorbei.

Eine Anmerkung für die Zukunft: Als Speicheradministrator müssen Sie das Unternehmen informieren, wenn es Zeit ist, den Speicher zu erweitern. Das ist normalerweise der Fall, wenn er etwa halb voll ist. Wenn er zu 70 % voll ist, können Sie täglich den Feueralarm auslösen, bis das Budget zugewiesen wird. Wenn das nicht passiert, ist es an der Zeit, sie in einem sehr offenen Meeting darüber zu informieren, dass sie das Geschäft gefährden. Daten sind der Kern des modernen Geschäfts.


Sie können alle symbolischen Links wie folgt identifizieren:

C:\Users\user>dir /AL /S C:\ | find "SYMLINK"
07/14/2009  01:08 AM    <SYMLINKD>     All Users [C:\ProgramData]

# Only one result in on my Windows 7 host, and it's a system default.
# There are likely more in Windows Server OSs.
# Cmd Explained:
# /AL   A Lists file with attribute:L (Symlinks and dir junctions)
# /S    Do recursively
# C:\   Drive to scan

„Alle Benutzer“ ist der symbolische Link „C:\Benutzer\Alle Benutzer“, der auf „C:\ProgramData“ verweist. Beachten Sie, dass die Ausgabe des obigen Befehls nicht den vollständigen Pfad zum symbolischen Link angibt, den Sie benötigen.

<<< STOP >>> Wenn die Anzahl der symbolischen Links weniger als tausend beträgt, sollten Sie ernsthaft in Erwägung ziehen, sie manuell durch ihre Zieldateien zu ersetzen.

Sie könnten NTFSLinksView verwenden. Damit können anscheinend Daten exportiert werden, die die vollständigen Ziel- und Symlink-Pfade enthalten.http://www.nirsoft.net/utils/ntfs_links_view.html

Sobald Sie diese Werte haben, können Sie sie mit diesem Powershell-Teil durchlaufen. Ändern Sie das Trennzeichen in das, was das Programm ausgibt. Das Beispiel setzt Leerzeichen als Trennzeichen. Wenn Kommas verwendet werden, verwenden Sie: ','. Stellen Sie sicher, dass das CVS nur die Link- und Zieldaten enthält. In dieser Reihenfolge.

Hinweis: Dadurch werden die Standard-Symlinks nicht beibehalten …

Import-CVS -Delim ' ' -Path input.cvs -Header Link,Target | ForEach-Object {
cmd /c rmdir $Link
Copy-Item $Target $Link
}

WARNUNG: Dies ist ungetestet und kann möglicherweise noch mehr Schaden anrichten ... Verwendung auf eigene Gefahr. Wenn keine vorherigen Backups vorhanden sind und Sie zu diesem Ergebnis gekommen sind, erstellen Sie ein Backup, bevor Sie fortfahren.

Antwort2

Dieses Problem ist nicht auf eine Domänenrichtlinie zurückzuführen. Es liegt an einem Windows-Update, das symbolische Links beschädigt hat.dieser Threadhat mir geholfen, das eigentliche Problem zu verstehen. Nachdem ich das Update deinstalliert und eine Eingabeaufforderung verwendet hatte, um diesen Befehl auszuführen:

fsutil-Verhaltenssatz SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

Ich konnte den obersten Ordner auf ein lokales USB-Laufwerk kopieren und die Originaldateien mit ihrem ursprünglichen Namen wiederherstellen und den größten Teil des von mir angerichteten „Schadens“ rückgängig machen.

Wenn Sie das Update deinstallieren und den obigen Befehl verwenden, müssen Sie beide Aktionen auf beiden Computern ausführen, damit die Links richtig funktionieren. Ich konnte dies nur auf dem Computer tun, den ich ursprünglich zum Deduplizieren des Ordners verwendet hatte. Ich bin mir nicht einmal sicher, ob ich eine der beiden Aktionen ausführen musste, um die Dateien auf ein USB-Laufwerk zu kopieren und die Links so zu konfigurieren, dass ich die Originaldateien zurückbekomme. An diesem Punkt habe ich das Problem behoben und muss die Codierung, die ich durchgeführt habe, nicht weiter verfolgen.

verwandte Informationen