Come funzionano i collegamenti simbolici in Dropbox?


20

Ho creato alcuni collegamenti ai file in una cartella. Quando ho aggiunto quella cartella a Dropbox, i collegamenti contenevano copie duplicate dei file collegati. Hai avuto questo problema? Capisci cosa sta succedendo? C'è una soluzione?

Per chiarire questa domanda: nella colonna "tipo" del file manager, prima di connettersi a Dropbox, Link_to_notes ha mostrato di essere un collegamento e la dimensione era di 32 byte. Dopo essersi connesso a Dropbox, Link_to_notes ha mostrato di essere un documento di testo semplice e la dimensione era 18,7 kB, la dimensione del file delle note.


2
Con Dropbox una soluzione multipiattaforma, ogni altro comportamento sarebbe probabilmente ancora più confuso - come si comporterebbe se sincronizzi la tua cartella con un computer Windows?
Sergey

Dalla metà del 2019, Dropbox non segue più i symlink
eri0o

A partire dalla scrittura attuale, i collegamenti simbolici non funzionano più e fanno schifo.
Jus12

Risposte:


15

DropBox segue i collegamenti simbolici e li tratta come directory. È davvero utile per il backup senza dover spostare file e directory nella directory di DropBox.

$ ln -s ~/Documents/ ~/Dropbox/Documents

Questo potrebbe essere un comportamento pericoloso. Ad esempio, se elimino il collegamento dalla directory di Dropbox, è forse possibile che stia eliminando accidentalmente anche i miei file o cartelle originali?
Vicon,

@Vicon, non è un comportamento pericoloso, è un comportamento previsto. Ma sì, per essere chiari, se rimuovi il link simbolico, i file verranno rimossi anche da Dropbox
Gregology,

2
Nella comunità di Dropbox, è stato affermato più volte che Dropbox non supporta collegamenti simbolici e sconsiglia vivamente di utilizzarlo. Se contatti l'assistenza clienti di Dropbox, ti chiederanno di rimuovere qualsiasi collegamento simbolico prima di procedere. Certo, le persone possono ancora usarlo, ma questo non è un comportamento previsto da Dropbox e può essere pericoloso (perdere file), problematico (avere file duplicati non intenzionalmente sincronizzati, che è il problema che si chiede di risolvere in questa domanda), anche come sincronizzazione dei problemi di prestazioni, ecc.
Vicon

@Vicon, i collegamenti simbolici funzionano in modo trasparente per molte operazioni: i programmi che leggono o scrivono in file denominati da un collegamento simbolico si comporteranno come se operassero direttamente sul file di destinazione
Gregology

1
Questo metodo ha funzionato bene per me per molto tempo nei file system ext4. Non ho alcun senso di pericolo perché non interagisco mai con i file Dropbox in Dropbox. Riesce a collegare i miei sistemi Linux e i miei tablet Android. Tuttavia, noto che questo link dice che il mio consiglio non è aggiornato help.dropbox.com/installs-integrations/sync-uploads/symlink
pauljohn32

7

Il modo migliore per farlo è archiviare i file nella cartella dropbox e collegarli ad essi dall'esterno ...

Quindi crea ~ / Dropbox / Documents e symlink:

ln -s ~/Dropbox/Documents ~/Documents

Questo evita che la dropbox venga confusa e che scollega qualsiasi cosa sia un link all'interno perché hai tutte le cose dentro e invece quando le vuoi altrove ti colleghi a dropbox. La regola di base è che non ci sono collegamenti simbolici all'interno della cartella dropbox ... li hanno fuori dalla cartella dropbox e non avrai problemi.

Ho dropbox su diverse macchine Ubuntu e tutte le mie principali cartelle di livello superiore sono effettivamente archiviate in dropbox.


Perché Dropbox si confonderebbe? E in che modo Dropbox altererebbe i collegamenti simbolici? I collegamenti simbolici vengono automaticamente risolti dal file system
Gregology,

6

dropbox seguirà i collegamenti sym alle directory, ma interromperà un collegamento (sym o hard) a un file e lo sostituirà con un file.


2

TL; DR: Di seguito è riportato un modo per ottenere un comportamento abbastanza simile ai collegamenti simbolici, solo a livello di interfaccia utente grafica (GUI), che è particolarmente utile se non si desidera che DropBox copi ripetutamente gli stessi file in cartelle diverse all'interno di DropBox gerarchia solo perché si desidera visualizzarli da luoghi diversi (ad esempio, percorsi di cartelle).

sfondo

Più di una volta sono stato bruciato dalla duplicazione di cartelle DropBox se creo un link simbolico (symlink) all'interno della gerarchia di cartelle DropBox, fino al punto di riempire il mio account. Come molti hanno notato in tutto il Web, non esiste una vera soluzione per la mancanza di DropBox di trattare correttamente i collegamenti simbolici, il che è sfortunato in quanto non sarebbe difficile per loro farlo.

Soluzione

Una soluzione alternativa che utilizzo, tuttavia, per ottenere il comportamento equivalente dei link simbolici all'interno della gerarchia di DropBox --- ciò che gli altri spesso chiamano "link simbolici interni" --- senza che DropBox duplica tutto è creare l'equivalente di un file di collegamento di Windows (ad es. , un file .lnk nell'ecosistema MS). Lo faccio creando un file .desktop che apre il file manager del mio sistema sul percorso desiderato. Pertanto, questa soluzione alternativa funziona solo a livello di GUI e solo per sistemi compatibili con XDG (ad esempio Ubuntu, sistemi basati su GNOME, molti altri).

Esempio

Ad esempio, sto leggendo le tecniche avanzate di Python per un nuovo lavoro che sto assumendo e i PDF che sto leggendo sono memorizzati nella mia cartella DropBox per l'app GoodReader (iOS) in modo da poterli leggere entrambi sul mio desktop e con i miei dispositivi mobili. Piuttosto che dover eseguire il drill down su quella cartella ( /home/morse/lib/active/GoodReader/Books/Python), creo semplicemente una Python.desktopcartella /home/morse/Desktopcon il seguente contenuto:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Name=Python
Exec=nautilus /home/morse/lib/active/GoodReader/Books/Python
Icon=/usr/share/icons/MacBuntu-OS/places/96/stock_folder.png
Terminal=false

(Nota: Assicurarsi di adattare la Exec=nautilus ...parte di se si utilizza un file manager Nautilus diverso, e, naturalmente, si vuole adattare la Name=, Icon=e parte di percorso del Exec=riga per ogni "collegamento simbolico" che si desidera creare.)

Con questo, vedo una cartella denominata Python sul mio desktop che si comporta proprio come un collegamento simbolico --- cioè, faccio doppio clic su di essa e apre la cartella appropriata --- ma solo un piccolo file di testo (ad esempio, Python. desktop) viene sincronizzato con DropBox e con i miei altri sistemi (al contrario di tutti i contenuti eventualmente duplicati ovunque da DropBox).

Come con altri file .desktop, le autorizzazioni devono essere impostate in modo tale che il file sia sia leggibile che eseguibile (ad esempio, chmod 700 Python.desktopo chmod 755 Python.desktop) per la visualizzazione dell'icona indicata e per fare doppio clic su di essa per fare effettivamente qualsiasi cosa.

Sommario

In sintesi, quindi, avrò sempre i file effettivi disponibili da qualche parte all'interno di DropBox --- in questo esempio /home/morse/lib/active/GoodReader/Books/Python--- ma avrò anche un "collegamento" desktop su tutti i miei sistemi basati su Linux per i quali ho anche DropBox è configurato.

Naturalmente, questa soluzione alternativa non funziona a livello di riga di comando, come farebbe un vero collegamento simbolico.

Detto questo, questa sembra essere una nuova soluzione a livello di GUI, una che non ho mai visto pubblicata altrove. Quindi, spero che questo approccio possa essere utile agli altri.


Questo è geniale! Finora non ho visto una soluzione per i symlink interni! E questo è super pulito. Grazie per aver reso speciale la mia giornata! Dovrei aggiungere che dovrebbe essere abbastanza semplice creare uno script da riga di comando, che analizza un file .desktop e apre il file o la cartella che è un collegamento simbolico, anche se potresti non essere in grado di "cd" direttamente nella directory.
Praveen, il

0

Comprimi i tuoi collegamenti e salva il file compresso su Dropbox

Le risposte precedenti sono esaustive e chiare. Suggerisco solo tre soluzioni alternative, basate su un unico principio. Il terzo sembra più difficile ma è molto efficiente. L'idea è: comprimi i tuoi symlink in un file tar, che Dropbox non tratterà come un link, e salvalo su Dropbox. Il terzo modo è quasi diretto come copiare i tuoi collegamenti direttamente sul tuo Dropbox - in realtà molto più velocemente rispetto alla copia di più collegamenti uno per uno.

Ho una ventina di collegamenti simbolici che normalmente utilizzo nella mia installazione di Lubuntu, ad es. Per un rapido accesso agli script bash salvati in Dropbox, ai hdd esterni, ai documenti usati di frequente, ecc. Sono tutti nella mia home directory e nel desktop e lo trovo comodo avere una copia di Dropbox da utilizzare per altre installazioni o quando dist-upgrade (cioè quando reinstallo dopo aver provato a dist-upgrade;).

1a via

Fai una directory chiamata MyLink (diciamo, in Documenti) e copi tutti i tuoi symlink domestici su di essa; se si dispone di collegamenti simbolici in altre directory, creare sottocartelle in MyLink e copiarvi i collegamenti simbolici. Ad esempio, se i collegamenti che si desidera salvare sono in home e in Desktop, copiare i collegamenti home in MyLink, creare una directory denominata Desktop in esso e copiare i collegamenti Desktop in esso. Quindi apri un Terminale, cd Documents (a condizione che questa sia la directory in cui si trova MyLinks) e crea un file tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Ricorda di aggiungere l'estensione ".tar" al nome del file tar, altrimenti Ubuntu Archive Manager rifiuta di aprirlo.) In questo caso, fai solo attenzione a non aggiungere l'opzione -h (--dereference) a tar perché si comporterebbe esattamente come Dropbox e comprimerebbe i file di destinazione anziché i collegamenti simbolici. (A proposito, un simile comportamento sarebbe il benvenuto nella maggior parte dei casi, specialmente se si mira alla portabilità, ma non è se si desidera salvare i collegamenti simbolici come collegamenti simbolici.)

Il file tar includerebbe anche i collegamenti temporaneamente interrotti, come i collegamenti a HDD esterni attualmente non montati, il che va bene.

Salva il file tar nel tuo Dropbox. Quando hai bisogno dei link indietro, copia il file tar in una directory nel tuo file system (non all'interno di Dropbox), estrailo (fai clic destro e scegli "Estrai qui") e copia i tuoi collegamenti simbolici nelle posizioni in cui li desideri .

2a via

Se i collegamenti simbolici che vuoi salvare hanno un prefisso univoco (come "MySl" ...) puoi creare rapidamente il tuo tarfile in questo modo (spazi inutili aggiunti per prevenire errori):

find   .   -name   "MySl*"|xargs  tar  cvf  MyLinks.tar

Il singolo punto dopo "trova" indica la directory corrente: apri il Terminale nella tua home directory (come di default). Puoi sicuramente aggiungere un percorso al file tar e puoi emettere il comando da un'altra directory che non è home: sostituisci il "." con il percorso verso casa / utente. Non è necessario creare directory di lavoro come MyLink sopra. Anche il ripristino dei collegamenti simbolici è rapido: copi il file tar a casa tua, fai clic destro su di esso ed "estrai qui". Tuttavia, prima di iniziare a aggiungere il prefisso a tutti i nomi dei tuoi symlink, dai un'occhiata alla prossima opzione.

3a via (e migliore)

Un modo molto veloce per raccogliere tutti i tuoi symlink in un file tar è: apri un Terminale a casa / utente (che è di default quando apri un Terminale) e:

find  .  -type  l|xargs  tar  -cvf  AllLinks.tar

Lo svantaggio è che ci sono TUTTI i tuoi collegamenti, inclusi alcuni symlink mozilla o hplip che non sapevi nemmeno di avere. Per evitare questo e per copiare tutti e solo i collegamenti simbolici da un elenco specificato di directory senza ricorsione , si scrive l'elenco dopo "trova" nel comando sopra. Supponi di voler salvare i collegamenti da casa / utente e desktop; tu puoi scrivere

 find /home/<USER>/ /home/<USER>/Desktop/ -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar

"-maxdepth 1" è per impedire che il ritrovamento si ripeta in casa. Se lo desideri, puoi aggiungere un percorso al tarfile. In alternativa:

 find .  Desktop -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar

Se sei pigro e vuoi usarlo spesso, puoi aggiungerlo come alias a .bashrc o a .bash_aliases nella tua home directory (.bash_aliases è un modo molto conveniente per raccogliere i tuoi alias e, perché no, salvarli in Dropbox ...). Basta creare un nuovo file vuoto chiamato .bash_aliases nella tua home directory (cioè / home / user), aprirlo con un editor di testo e scrivere la seguente riga in esso:

alias save_symlinks='find . Desktop -maxdepth 1 -type l|xargs tar -cvf MyLinks.tar'

Sostituisci le directory dopo "trova" con quelle che preferisci e "save_symlink" con un nome di comando a tua scelta. Per ripristinare, apri il tuo File manager (se il percorso delle directory nel comando sopra non è assoluto, il tarfile deve essere in home / user), fai clic con il tasto destro ed estrai.

Se lo fai, la vita è più facile. Tutto quello che devi fare è:

SALVA: digita save_symlink nel Terminale, salva il file tar nella tua casa su Dropbox; RIPRISTINA: copia il file da Dropbox nella tua home directory, fai clic destro su di esso e seleziona "estrai qui".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.