Workflow-Tipp So halten Sie Dateien an zwei Orten gleichzeitig

Vor kurzem wollte ich meine UDK 3-Projektdateien in meiner Dropbox sichern, aber UDK erfordert, dass sich die Projektdateien im selben Verzeichnis befinden wie die (4 GB) -Installation selbst - und 4 GB sind für meine Dropbox viel zu groß! In diesem Artikel erfahren Sie, wie Sie dieses Problem lösen können, indem Sie Dateien an zwei Stellen gleichzeitig erscheinen lassen harte Links, symbolische Links, und Kreuzungen.

Vorschaubild-Symbol von P. J. Onori.


Das Grundkonzept

Wenn Sie Ihr Festplattenlaufwerk defragmentieren und die Informationen verschoben werden, funktionieren Ihre gespeicherten Dateien nicht mehr, nur weil die Informationen an einem anderen Ort gespeichert sind. Dies liegt daran, dass Ihr Betriebssystem über eine Abstraktionsschicht verfügt, die all dies verwaltet. Im Wesentlichen ist das, was Sie anklicken, um ein Bild oder eine ausführbare Datei zu öffnen, nur ein Verknüpfung zur gewünschten Datei oder zu den gewünschten Daten.

Wenn Sie dies erweitern, können Sie davon abziehen, dass Sie mehr als einen Link zum haben können gleich Artikel; foo.exe und bar.exe könnte das gleiche Programm öffnen!

Lassen Sie uns ein bisschen technischer werden…

Spitze: Dies ist eigentlich eine Funktion von POSIX-kompatiblen Dateisystemen wie NTFS. Dies funktioniert jedoch NICHT für FAT, FAT32, ExFAT und ReFS.

Harte Links

Harte Links sind ähnlich wie Dateiverknüpfungen; Sie ermöglichen Ihnen den Zugriff auf dieselbe Datei an verschiedenen Orten. Der Hauptunterschied besteht darin, dass dies im Dateisystem selbst implementiert ist. Wenn Sie also eine feste Verknüpfung zu einer Datei erstellen, erstellen Sie einfach eine neue Name und es wird genau dieselbe Datei sein, wobei beide Namen auf genau dieselbe Stelle auf der Festplatte zeigen.

Wenn Sie Änderungen an der Datei vornehmen, über irgendein der "Namen" (dh, wenn Sie die Originaldatei oder eine der Hardlinks öffnen und ändern), werden die Änderungen an alle anderen Stellen übertragen, an denen die Datei vorhanden ist, und zwar in Bezug auf die Dateiattribute und die Datei selbst.

Jede Datei ist so lange vorhanden, bis alle festen Links gelöscht sind. In diesem Fall wird der von der Datei belegte Speicherplatz als frei deklariert. (Sie können ein Dateiwiederherstellungsprogramm verwenden, um Ihre Datei wiederherzustellen, dies funktioniert jedoch nicht garantiert.)

Kreuzungen (oder Kreuzungspunkte)

Hardlinks sind zu Dateien welche Kreuzungen sind Verzeichnisse, Partitionen oder Volumes auf demselben System (und nur auf diesem). Beide werden auf Betriebssystemebene interpretiert und sind daher für Programme und Benutzer transparent.

Symbolische Links

Im Gegensatz zu den oben genannten, symbolische Links kann sowohl für Dateien als auch für Ordner verwendet werden, sie ähneln daher in ihrem Wesen und ihrer Wahrnehmung den Verknüpfungen.

Der Unterschied ist, ein symbolischer Link verweist auf den ursprünglichen Dateipfad und nicht auf den Speicherort der Datei auf Ihrer Festplatte. Das heißt, wenn Sie den Inhalt der Datei ändern, zeigt ein symbolischer Link immer noch darauf (und zeigt die Änderungen an), aber wenn Sie den Inhalt der Datei ändern Name der Originaldatei zeigt der symbolische Link nicht mehr darauf.


Praktische Anwendungen

Ich habe damit einige praktische Probleme gelöst.

UDK 3 Project Management Nightmare

Jeder, der mit UDK 3 gearbeitet hat, weiß, dass der Workflow des Projektmanagements zwar großartig ist, der Projektablauf jedoch umständlich ist. Zum Beispiel ist es nicht einfach, mehrere Projekte in derselben Installation zu haben. Daher haben Entwickler normalerweise mehrere Installationen für mehrere Projekte. Es wird noch schlimmer, wenn Sie darüber nachdenken, Ihr Projekt zu sichern, wie ich oben erwähnt habe.

Für meine privaten Projekte verwende ich immer zwei Sicherungslösungen: Quellcodeverwaltung und Cloud-Sicherung, jeweils mit BitBucket und Dropbox. Das Einrichten der Quellcodeverwaltung für Ihren Code in UDK ist trivial. Wenn Sie jedoch ein benutzerdefiniertes Projekt mit einer Cloud-Backup-Lösung wie Dropbox sichern möchten, müssen alle Dateien in einem bestimmten Systemordner gespeichert werden?

Hier ist meine Lösung:

  • Erstellen Sie in Ihrem Cloud-Sicherungsordner die Ordnerstruktur für Ihre benutzerdefinierten Projektdateien neu, sodass Sie einfach eine andere UDK-Installation kopieren und einfügen können. (Dies ist ein zusätzlicher Bonus und hilft, wenn Sie Ihr Projekt mit einem USB-Stift auf ein Offline-Gerät übertragen möchten.)
  • Vergewissern Sie sich, dass Ihre Projektdateien (einschließlich der UDK-Konfigurationsdateien, mit denen Ihr benutzerdefiniertes Projekt eingerichtet wurde) korrekt platziert sind.
  • Erstellen Sie Junctions des benutzerdefinierten Projektordners für die UDK-Installation und feste Links für die isolierten Dateien außerhalb dieser Ordner.

Spitze: Sie können keine symbolischen Links verwenden. Das UDK erkennt das und gibt einen Fehler aus.

Eine gut organisierte Musikbibliothek

Ich hatte immer Probleme mit der Organisation meines Musikbibliotheksordners. Ich war nie ein Fan von Apps wie iTunes und wollte meine Festplatte sauber und ordentlich haben. Nachdem ich jahrelang verschiedene Ansätze ausprobiert hatte, hatte ich am meisten Gefallen an einem Ordner pro Künstler und den jeweiligen Künstler-Singles und mehreren Ordnern pro Album.

Das ist alles gut, bis Sie auf Singles eines Künstlers treffen, der zwanzig weitere umfasst. Was tun Sie dagegen? Kopieren Sie die gleiche Datei in den Ordner jedes Künstlers. Nee; Verwenden Sie feste Links!

  • Da es immer einen Künstler gibt, der den Besitz des Songs übernimmt, platzieren Sie den Song im Ordner dieses Künstlers.
  • Erstellen Sie feste Links desselben Songs in den Ordner eines jeden Künstlers.

Hände auf!

So richten Sie diese Links auf den drei Hauptbetriebssystemen ein.

Windows

In Windows können Sie dies über die Befehlszeile ohne Installation von irgendetwas tun, oder über die Explorer-Benutzeroberfläche, nachdem Sie ein kleines Tool namens Link Shell Extension installiert haben.

Wenn Sie die Befehlszeile verwenden, öffnen Sie eine Eingabeaufforderung mit erhöhter Befehlszeile (d. H. Eine mit Administratorrechten) mklink, und drücke Eingeben. In den Hilfeinformationen erfahren Sie, wie Sie Hardlinks, Junctions und symbolische Links für Verzeichnisse erstellen. Beispielsweise können Sie durch Aufrufen eine feste Verknüpfung zwischen zwei Textdateien erstellen mklink / H c: \ file1.txt c: \ file2.txt.

Laden Sie dazu über den Explorer zunächst die Link Shell Extension herunter und installieren Sie sie. (Dies ist meine bevorzugte Lösung, da sie über erweiterte und nützliche Funktionen wie Volumenpunkte und Overlay-Symbole verfügt.) Der Workflow ist wirklich unkompliziert; Sie können es in Aktion sehen und lernen, wie Sie es auf der Webseite des Dienstprogramms verwenden können.

Linux

Bei meiner Suche habe ich keine vollständige GUI-Lösung für Linux gefunden. Wenn Sie eines wissen, lassen Sie es bitte in den Kommentaren.

Wenn Sie das Terminal verwenden, können Sie das verwenden l Befehl, um feste Links und symbolische Links zu erstellen. Versuchen Sie es zum Beispiel In fooOriginal barLink. Wikibooks bietet eine einfache Anleitung zu ln oder Sie können die vollständige Spezifikation lesen.

Es gibt eine teilweise GUI-Lösung: In Ubuntu (und möglicherweise anderen Linux-Varianten) können Sie symbolische Links erstellen, indem Sie eine Datei mit der mittleren Maustaste ziehen und auswählen Link hier.

Leider habe ich keine GUI-Anwendung gefunden, die die Erstellung von Hardlinks ermöglicht.

Mac OS X

OS X ist ein Sonderfall, da harte Verzeichnisverknüpfungen alle möglichen Probleme verursachen. Außerdem gibt es noch eine andere Idee, die den anderen ähnlich ist, aber fortgeschrittener ist: eine alias.

Aliase ähneln symbolischen Links, werden jedoch in einer übergeordneten und robusteren Struktur implementiert. Sie können über eine eindeutige ID mit Dateien und Ordnern verbunden werden, einschließlich vernetzter Speicher. Eine der besten Funktionen von Aliasnamen besteht darin, dass sie Änderungen an den Speicherorten von Dateien nachverfolgen. Das heißt, sie brechen nicht, wenn die Originaldatei an einen anderen Ort verschoben wird. Leider kann es bei einigen Anwendungen zu Problemen kommen, wenn sie dem Ziel folgen.

Auf der anderen Seite symbolische Links (oder Symlinks) sind Systemdateien auf niedriger Ebene, die den Pfad des Ziels enthalten. Sie werden beim Verschieben der Originaldatei beschädigt, aber jede Anwendung, die sie verwendet, wird am gewünschten Ort ankommen. Symlinks eignen sich hervorragend für vordefinierte System- oder Anwendungsordner oder wenn Sie Ihre Benutzerdokumente oder den E-Mail-Cache auf ein anderes Laufwerk verschieben möchten.

Spitze: Mac OS-Benutzer empfehlen, dass Sie, wo immer möglich, Aliase und symbolische Links einhalten.

Im Terminal können Sie die l Befehl wie in Linux.

In der GUI können Sie über das Kontextmenü einen Alias ​​erstellen, indem Sie mit der rechten Maustaste auf eine Datei oder einen Ordner klicken. Alternativ können Sie symbolische Links mit der App SymbolicLinker erstellen.

Eine dritte Möglichkeit ist, Ihren eigenen Code zu schreiben oder den Code aus diesem GitHub-Repository zu kompilieren


Andere Anwendungsfälle

Ich treibe hier immer weiter von der Spieleentwicklung weg, aber ich denke, es ist wichtig, die verschiedenen Probleme aufzuzeigen, die Sie mit diesem Konzept lösen können, sodass Sie bereit sind, es anzuwenden, wenn es in Ihrem gamedev-Workflow das nächste Mal angebracht ist!

Einstellungsdateien oder Schlüsselverzeichnisse verschieben

Die meisten Anwendungen sind hinsichtlich des Einstellungspfads des Benutzers nicht flexibel. Sie können dieses Problem daher mithilfe von Links beheben, wenn Sie die Informationen sichern oder an einem anderen Ort aufbewahren möchten.

In Linux können Sie auch symbolische Links verwenden, um Ihren Heimatordner auf einem anderen Laufwerk zu sichern:

  • Kopieren Sie Ihren Basisordner auf ein anderes Laufwerk oder eine andere Partition,
  • Formatieren Sie Ihre Systempartition mit einer Neuinstallation.
  • Erstellen Sie einen symbolischen Link zum neuen Systemordner. (Wenn Sie Bash kennen, können Sie ein Skript erstellen, das dies für Sie erledigt, sodass Sie problemlos neue Versionen neuer Versionen installieren können.)

Unter Windows können Sie, insbesondere wenn Sie eine eher kleine SSD haben, Links verwenden, um Ihre Windows-Installation von Ihrer zu trennen Nutzer und Programmdateien Ordner:

  • Installieren Sie Windows auf Ihrer SSD.
  • Beweg den Programmdateien und Benutzer Ordner auf einem separaten Laufwerk und erstellen Sie Verknüpfungen für die Pfade der ursprünglichen Ordner.
  • Wenn Sie einen Windows Update-Fehler 80070011 erhalten, sollten Sie diesen Artikel zur Fehlerbehebung lesen.
  • Wenn Sie unter Linux und Windows einen Dual-Boot-Vorgang ausführen, können Sie Verknüpfungen verwenden, um auf beiden Betriebssystemen dieselben persönlichen Dateien zu speichern. Dies ist besonders in Szenarien hilfreich, in denen Sie in beiden Betriebssystemen über E-Mail- oder Dropbox-Zugriff verfügen, Ihre Dateien jedoch nicht auf jedem System dupliziert werden sollen.

    Programmierung

    Sie können ein großes Programm mit mehreren Funktionen erstellen, das sich auf den Namen der Anwendung stützt, um zu bestimmen, welche Funktion es ausführt. (Das heißt, dieselbe Anwendung hat mehrere feste Links, die sich nur im Namen unterscheiden.) Dies wurde tatsächlich in alten Unix-Systemen ausgeführt, wo mv, cp und rm lief die gleiche ausführbare Datei. Wenn Sie darüber nachdenken, kann das Verschieben einer Datei im schlimmsten Fall eine sein cp und rm Wenn Sie diese Operation ausführen, können Sie den größten Teil des Codes freigeben und den Speicherbedarf für Baugruppen auf ein Minimum reduzieren.

    Während ich das recherchierte, habe ich es in C # und Windows 8.1 ausprobiert. In meiner Forschung habe ich herausgefunden, dass es viele Möglichkeiten gibt, den Dateinamen eines Programms abzurufen, aber nur einige dieser Methoden können den Dateinamen eines Hardlinks abrufen.

    Das obige Bild zeigt ein Testprogramm, um dieses Problem zu veranschaulichen. Wie Sie sehen, lautet der Dateiname des ersten Fensters OriginalFileName.exe und das der zweite ist HardlinkedFileName.exe. Der angezeigte Code ist der Code, der für die jeweiligen Ergebnisse benötigt wird. Den Code für diese Anwendung erhalten Sie in diesem GitHub-Repo.

    Als Webentwickler stoßen Sie möglicherweise auf die gleichen Probleme, die ich für die UDK 3-Entwicklung beschrieben habe, insbesondere wenn Sie LAMP, WAMP oder ähnliches verwenden. Sie können ein Skript so programmieren, dass feste Links und symbolische Links zu Ihren Site-Dateien erstellt werden, sodass sich die Dateien auf Ihren Speichergeräten befinden können. Sie müssen jedoch nichts ändern, um die Site zu testen.


    Fazit

    Erwarten Sie nicht, dies täglich zu verwenden, sondern erwarten Sie gesegnet zu sein, wenn Sie ein Problem haben, das sich leicht lösen lässt. Es ist eines dieser Dinge, die Sie im Hinterkopf behalten sollten, denn eines Tages wird es nützlich sein, es zu wissen.