Sfat de flux de lucru Cum să păstrați fișierele în două locații la o dată

Recent, am vrut să fac copii de rezervă ale fișierelor mele de proiecte UDK 3 la Dropbox-ul meu, dar UDK necesită ca fișierele de proiect să fie în același director ca și instalarea (4GB) - iar 4GB este prea mare pentru Dropbox-ul meu! În acest articol, veți afla cum puteți rezolva această problemă făcând ca fișierele să apară în două locuri simultan, utilizând link-uri grele, legăturile simbolice, și intersecții.

Imagine imagine previzuală de P. J. Onori.


Conceptul de bază

Când defragmentați unitatea HDD și informațiile sunt mutate, niciunul dintre fișierele dvs. salvate nu încetează să funcționeze doar pentru că informațiile sunt stocate într-un alt loc. Acest lucru se datorează faptului că sistemul dvs. de operare are un strat de abstractizare care gestionează toate acestea; în esență, ceea ce faceți clic pentru a deschide o imagine sau executabil este doar o legătură la fișierul sau datele dorite.

Extindând acest lucru, puteți deduce că ați putea avea mai mult de un singur link către la fel articol; foo.exe și bar.exe ar putea deschide exact același program!

Să facem ceva mai tehnic ...

Bacsis: Aceasta este de fapt o caracteristică a sistemelor de fișiere compatibile POSIX, cum ar fi NTFS. Acestea fiind spuse, acest lucru nu va funcționa pe FAT, FAT32, exFAT și ReFS.

Link-uri dure

Legături greu accesibile sunt similare cu scurtăturile de fișiere; acestea vă permit să aveți acces la același fișier în diferite locații. Principala diferență este că acest lucru este pus în aplicare în sistemul de fișiere în sine, deci atunci când creați un link greu la un fișier, creați doar un nou Nume pentru el, și va fi exact același fișier, ambele nume indicând exact aceeași locație în hard disk.

Dacă efectuați modificări ale fișierului prin orice a "numelor" (adică dacă deschideți fișierul original sau unul dintre link-urile hard și modificați-l), modificările vor fi propagate în toate celelalte locuri în care fișierul există, în ceea ce privește atributele de fișier și fișierul în sine.

Fiecare fișier va exista până când toate linkurile sale greșite vor fi șterse; când se întâmplă acest lucru, spațiul utilizat de fișier este declarat gratuit. (Puteți utiliza un instrument de restaurare a fișierelor pentru a obține fișierul înapoi, dar acest lucru nu este garantat să funcționeze.)

Juncții (sau Puncte Junction)

Legăturile greșite sunt în dosare intersecții sunt la directoare, partiții sau volume, pe (și numai pe) același sistem. Ambele sunt interpretate la nivelul sistemului de operare și, prin urmare, sunt transparente pentru programe și utilizatori.

Link-uri simbolice

Spre deosebire de cele de mai sus, legăturile simbolice pot fi folosite atât pentru fișiere, cât și pentru dosare, astfel încât, în esență și percepție, acestea sunt într-adevăr similare cu comenzile rapide.

Diferența este că o legătură simbolică indică calea inițială a fișierului, mai degrabă decât locația fișierului pe hard disk. Aceasta înseamnă că, dacă modificați conținutul fișierului, o legătură simbolică va continua să fie îndreptată spre acesta (și va reflecta modificările), dar dacă schimbați Nume din fișierul original, legătura simbolică nu va mai indica acest lucru.


Aplicații practice

Am folosit acest lucru pentru a rezolva câteva probleme practice.

UDK 3 Project Management Nightmare

Oricine a lucrat cu UDK 3 știe că, deși motorul este excelent, fluxul de lucru al managementului de proiect este greoi, de exemplu, nu este deloc banal să faci mai multe proiecte în aceeași instalare, deci dezvoltatorii au de obicei instalații multiple pentru mai multe proiecte. Se agravează dacă începi să te gândești la susținerea proiectului, așa cum am menționat mai sus.

Pentru proiectele mele private, folosesc întotdeauna două soluții de rezervă: controlul sursei și backup-ul nor, cu BitBucket și respectiv Dropbox. Configurarea controlului sursă al codului dvs. în UDK este trivială, dar, dacă doriți să efectuați o copie de rezervă a proiectului dvs. personalizat cu o soluție de backup în cloud, cum ar fi Dropbox, care necesită ca toate fișierele să fie într-un anumit dosar de sistem?

Iată soluția mea:

  • În dosarul de backup al cloud-ului, recreează structura de directoare pentru fișierele personalizate de proiect, astfel încât este posibil să copiați și să lipiți doar într-o altă instalare UDK. (Acesta este un bonus adăugat și vă ajută dacă doriți să vă duceți proiectul pe un stilou USB la un dispozitiv offline.)
  • Confirmați că fișierele de proiect (inclusiv fișierele de configurare UDK care au configurat proiectul personalizat) sunt plasate corect.
  • Creați joncțiuni ale folderului de proiect personalizat în instalarea UDK și linkuri grele pentru fișierele izolate din afara acestor foldere.

Bacsis: Nu puteți folosi link-uri simbolice; UDK va detecta și va arunca o eroare.

O bibliotecă de muzică bine organizată

Întotdeauna am avut probleme cu modul în care am organizat dosarul meu de muzică; deoarece nu am fost niciodată un fan al utilizării unor aplicații ca iTunes și am vrut ca hard disk-ul meu să fie curat și organizat. După ce am petrecut ani de zile încercând diferite abordări, cel pe care mi-a plăcut cel mai mult avea un dosar per artist și, în interiorul, single-urile artistului respectiv și mai multe foldere pe album.

Asta-i bine, până când începe să intri pe single-uri ale unui artist care are încă douăzeci de ani. Ce vei face, copiați același fișier în folderul fiecărui artist? nope; utilizați linkuri tari!

  • Întrucât există întotdeauna un artist care ia proprietatea asupra piesei, plasați melodia în dosarul acelui artist.
  • Creați linkuri tari ale aceluiași cântec la fiecare folder al artistului.

Mainile pe!

Iată cum puteți seta aceste linkuri pe cele trei sisteme principale de operare.

ferestre

În Windows, puteți face acest lucru folosind linia de comandă prompt fără a instala nimic sau prin GUI Explorer după instalarea unui instrument mic numit Link Shell Extension.

Dacă utilizați linia de comandă, deschideți o linie de comandă ridicată (adică una cu privilegii administrative), intrare mklink, și apăsați introduce. Veți vedea informațiile de ajutor explicând cum să creați linkuri tari, joncțiuni și linkuri simbolice pentru director. De exemplu, puteți crea o legătură greu între două fișiere text prin apelare mklink / H c: \ fișier1.txt c: \ file2.txt.

Pentru a face acest lucru prin intermediul Explorer, descărcați și instalați mai întâi extensia Shell Link. (Aceasta este soluția mea preferată deoarece are funcții extinse și utile, cum ar fi punctele de volum și pictogramele suprapuse.) Fluxul de lucru este foarte simplu; îl puteți vedea în acțiune și puteți învăța cum să îl utilizați pe pagina web a utilitarului.

Linux

În căutarea mea nu am găsit o soluție GUI totală pentru Linux; dacă știți despre una, vă rugăm să lăsați-o în comentarii.

Dacă utilizați Terminalul, puteți utiliza ln comanda pentru a crea link-uri tari și legături simbolice. De exemplu, încercați ln fooOriginal barLink. Wikibooks are un ghid simplu pentru ln sau puteți citi specificația completă.

Există o soluție grafică parțială: în Ubuntu (și eventual alte variante Linux), puteți crea legături simbolice prin glisarea unui fișier cu butonul de mijloc al mouse-ului și alegerea Link aici.

Din păcate, nu am găsit nicio aplicație GUI care să permită crearea unei legături grele.

Mac OS X

OS X este un caz special, deoarece linkurile hard director sunt cunoscute pentru a crea tot felul de probleme. În plus, există o altă noțiune, similară celorlalte, dar mai avansate: an alias.

Aliasurile sunt similare cu legăturile simbolice, dar sunt implementate la un nivel mai înalt și o structură mai robustă. Acestea pot fi conectate la fișiere și foldere de oriunde, inclusiv depozite în rețea, utilizând un ID unic. Una dintre cele mai bune caracteristici ale pseudonimilor este aceea că păstrează filele la modificările locației fișierelor; adică, nu se rupe atunci când fișierul original este mutat într-un alt loc. Din păcate, unele aplicații pot avea o problemă în ceea ce privește urmărirea acestora către țintă.

Pe de altă parte, legăturile simbolice (sau symlink-) sunt fișiere de sistem de nivel scăzut care conțin calea țintă; se rupe atunci când mutați fișierul original, dar orice aplicație care o utilizează va ajunge în locul dorit. Simbolinks sunt excelente pentru a fi utilizate cu dosare de sistem sau de aplicații predefinite sau când doriți să mutați documentul sau cache-ul de e-mail al utilizatorului pe o altă unitate.

Bacsis: Utilizatorii de sisteme de operare Macintosh vă sfătuiește să păstrați aliasurile și legăturile simbolice ori de câte ori este posibil.

În Terminal, puteți folosi ln comanda la fel ca în Linux.

În GUI, puteți utiliza meniul contextual pentru a crea un alias prin clic dreapta pe un fișier sau un dosar. Alternativ, puteți crea legături simbolice cu aplicația SymbolicLinker.

O a treia opțiune este să vă scrieți propriul cod sau să compilați codul din acest depozit GitHub


Alte cazuri de utilizare

Mă duc mai departe și mai departe de dezvoltarea jocurilor aici, dar cred că este important să arătați varietatea de probleme pe care le puteți rezolva cu acest concept, astfel încât să fiți bine pregătiți să îl utilizați atunci când este în viitor adecvată în fluxul de lucru gamedev!

Mutarea fișierelor de setări sau a directoarelor cheie

Cele mai multe aplicații nu sunt flexibile în ceea ce privește calea de setări a utilizatorului, astfel încât să puteți utiliza linkuri pentru a depăși această problemă în cazul în care doriți să creați copii de rezervă ale informațiilor sau să le păstrați separate și organizate în altă parte.

În Linux, puteți utiliza legături simbolice pentru a crea copii de rezervă pentru folderul de acasă într-o altă unitate:

  • Copiați folderul de domiciliu într-o unitate sau o partiție diferită,
  • Formatați partiția de sistem cu o instalare proaspătă.
  • Creați un link simbolic la dosarul de domiciliu nou al sistemului. (Dacă știți bash, puteți crea un script care face acest lucru pentru dvs., făcând ușor instalările proaspete de versiuni noi!)

În Windows, mai ales dacă aveți un SSD destul de mic, puteți utiliza linkuri pentru a separa instalarea Windows de dvs. Utilizator și Fișiere program foldere:

  • Instalați Windows pe SSD.
  • Mută Fișiere program și Utilizatori foldere către o unitate separată și crearea de joncțiuni pentru căile folderelor originale.
  • Dacă primiți o eroare de actualizare Windows 80070011, este posibil să doriți să verificați acest articol despre remedierea acesteia.
  • Sau, dacă bootați cu Linux și Windows, puteți utiliza link-uri pentru a păstra aceleași fișiere personale pe ambele sisteme de operare. Acest lucru este util în mod special în scenarii în care aveți nevoie de acces la e-mail sau Dropbox în ambele sisteme de operare, dar, desigur, nu doriți ca fișierele dvs. să fie duplicate în fiecare.

    Programare

    Ați putea crea un program mare cu multiple funcții care se bazează pe numele aplicației pentru a determina ce funcție va executa. (Adică, aceeași aplicație are mai multe link-uri greu care diferă doar în nume.) Acest lucru a fost de fapt făcut în sistemele vechi Unix, unde mv, cp și rm a executat același fișier executabil. Dacă vă gândiți la asta, mutarea unui fișier într-un scenariu cel mai defavorabil poate fi a cp și rm și, prin această metodă, ați putea partaja majoritatea codului și păstrați la minimum cerințele de stocare a ansamblurilor.

    În timp ce cercetam acest lucru am încercat în C # și Windows 8.1; în cercetarea mea am descoperit că sunt multe modalități de a obține numele de fișier al unui program, dar numai unele dintre aceste metode pot prelua numele de fișier al unui link greu.

    Imaginea de mai sus arată un program de testare pe care l-am făcut pentru a demonstra această problemă. După cum puteți vedea, numele fișierului primei ferestre este OriginalFileName.exe iar cel de-al doilea este HardlinkedFileName.exe. Codul afișat este codul necesar pentru rezultatele afișate. Puteți obține codul pentru această aplicație la acest repo GitHub.

    În cele din urmă, în calitate de dezvoltator web, s-ar putea să găsiți aceleași probleme pe care le-am prezentat pentru dezvoltarea UDK 3, mai ales dacă utilizați LAMP, WAMP sau altele similare. Ai putea codifica un script pentru a crea linkuri tari și legături simbolice la fișierele site-ului tău, astfel încât fișierele să poată fi oriunde pe dispozitivele tale de stocare, dar nu trebuie să schimbi nimic pentru a testa site-ul.


    Concluzie

    Nu vă așteptați să utilizați acest lucru zilnic, dar așteptați să vă simțiți binecuvântați atunci când aveți o problemă care este ușor de rezolvat cu acest lucru. Este unul din acele lucruri care trebuie păstrate în mintea ta, pentru că într-o zi va fi util să știi.