Como os links simbólicos funcionam no Dropbox?

20

Eu fiz alguns links para arquivos em uma pasta. Quando adicionei essa pasta ao Dropbox, os links continham cópias duplicadas dos arquivos vinculados. Você já teve esse problema? Você entende o que está acontecendo? Há uma solução?

Para deixar essa pergunta mais clara: Na coluna "tipo" do gerenciador de arquivos, antes de conectar-se ao Dropbox, Link_to_notes mostrou ser um link e o tamanho era 32 bytes. Após conectar-se ao Dropbox, o Link_to_notes mostrou ser um documento de texto sem formatação e o tamanho era 18,7 kB, o tamanho do arquivo de anotações.

user119046
fonte
2
Com o Dropbox sendo uma solução de plataforma cruzada, todos os outros comportamentos provavelmente seriam ainda mais confusos - como se comportaria se você sincronizasse sua pasta com uma máquina Windows?
Sergey
Desde meados de 2019, o Dropbox não segue mais links simbólicos
eri0o 5/11
No momento da redação atual, os links simbólicos não funcionam mais e são uma porcaria.
Jus12 30/11

Respostas:

15

O DropBox segue links simbólicos e os trata como diretórios. É realmente útil para fazer backup sem precisar mover arquivos e diretórios para o diretório do DropBox.

$ ln -s ~/Documents/ ~/Dropbox/Documents
Gregologia
fonte
Este pode ser um comportamento perigoso. Por exemplo, se eu excluir o link do diretório do Dropbox, existe algum cenário em que eu poderia excluir acidentalmente meus arquivos ou pastas originais também?
Vicon
@ Vicon, isso não é um comportamento perigoso, é um comportamento esperado. Mas sim, para deixar claro, se você remover o link simbólico, os arquivos também serão removidos do Dropbox
Gregology 26/18
2
Na comunidade do Dropbox, foi declarado repetidamente que o Dropbox não oferece suporte a links simbólicos e recomenda fortemente contra o uso. Se você entrar em contato com o suporte ao cliente do Dropbox, eles solicitarão que você remova qualquer link simbólico antes de continuar. Claro, as pessoas ainda podem usá-lo, mas esse não é um comportamento pretendido pelo Dropbox, e pode ser perigoso (perder arquivos), problemático (ter arquivos duplicados sincronizados sem querer, que é o problema que deve ser resolvido nesta pergunta) também. como problemas de desempenho de sincronização etc.
Vicon
@Vicon, links simbólicos funcionar de forma transparente para muitas operações: programas que ler ou escrever arquivos nomeados por um link simbólico se comportará como se operar diretamente no arquivo de destino
Gregology
1
Este método funcionou bem para mim por um longo tempo nos sistemas de arquivos ext4. Não tenho nenhum sentimento de perigo, porque nunca interajo com arquivos do Dropbox no Dropbox. Ele consegue vincular meus sistemas Linux e tablets Android. No entanto, observei que
pauljohn32
7

A melhor maneira de fazer isso é armazenar os arquivos na pasta dropbox e vincular-lhes o link de fora ...

Então, crie ~ / Dropbox / Documents e link simbólico:

ln -s ~/Dropbox/Documents ~/Documents

Isso impede que o dropbox fique confuso e desconecte qualquer coisa que seja um link interno, porque você tem todas as coisas internas e, quando você as deseja em outro lugar, vincula-as ao dropbox. A regra básica é que não há links simbólicos em nenhum lugar da pasta dropbox ... coloque-os fora da pasta dropbox e você não terá problemas.

Eu tenho o dropbox em várias máquinas ubuntu e tenho todas as minhas principais pastas de nível superior realmente armazenadas no dropbox.

JamesC
fonte
Por que o Dropbox ficaria confuso? E como o Dropbox alteraria links simbólicos? Links simbólicos são resolvidos automaticamente pelo sistema de arquivos
Gregology
6

O dropbox seguirá links sym para diretórios, mas quebrará um link (sym ou hard) para um arquivo e o substituirá por um arquivo.

brad80242
fonte
2

TL; DR: Abaixo está uma maneira de obter um comportamento bastante semelhante aos links simbólicos, apenas no nível da interface gráfica do usuário (GUI), o que é especialmente útil se você não quiser que o DropBox copie repetidamente os mesmos arquivos para diferentes pastas dentro do DropBox hierarquia apenas porque você deseja visualizá-los de lugares diferentes (ou seja, caminhos de pastas).

fundo

Mais de uma vez, eu fui queimado pelas pastas duplicadas do DropBox se eu criar links simbólicos (links simbólicos) dentro da hierarquia de pastas do DropBox, até o ponto de encher minha conta. Como muitos observaram na web, não há uma correção real para a falta do DropBox de tratar adequadamente os links simbólicos, o que é lamentável, pois não seria difícil para eles fazê-lo.

Solução alternativa

Uma solução alternativa que eu uso, no entanto, para obter o comportamento equivalente dos links simbólicos na hierarquia do DropBox - o que outras pessoas chamam de "links simbólicos internos" - sem o DropBox duplicar tudo, é criar o equivalente a um arquivo de atalho do Windows (por exemplo, , um arquivo .lnk no ecossistema MS). Eu faço isso criando um arquivo .desktop que abre o gerenciador de arquivos do meu sistema no caminho desejado. Portanto, essa solução alternativa funciona apenas no nível da GUI e apenas para sistemas compatíveis com XDG (por exemplo, Ubuntu, sistemas baseados no GNOME, muitos outros).

Exemplo

Por exemplo, estou lendo as técnicas avançadas de Python para um novo trabalho que estou executando, e os PDFs que estou lendo são armazenados na minha pasta DropBox para o GoodReader App (iOS), para que eu possa ler os dois na minha área de trabalho e com meus dispositivos móveis. Em vez de precisar detalhar essa pasta ( /home/morse/lib/active/GoodReader/Books/Python), basta criar uma Python.desktoppasta /home/morse/Desktopcom o seguinte conteúdo:

#!/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: Certifique-se de adaptar a Exec=nautilus ...parte se você estiver usando um gerenciador de arquivos diferente do Nautilus, e é claro que você vai querer adaptar o Name=, Icon=e parte do caminho da Exec=linha para cada "link simbólico" que deseja criar.)

Com isso, vejo uma pasta chamada Python na minha área de trabalho que age como um link simbólico - ou seja, clico duas vezes nela e abre a pasta apropriada - mas apenas um pequeno arquivo de texto (por exemplo, Python. desktop) é sincronizado com o DropBox e meus outros sistemas (em oposição a todo o conteúdo eventualmente ser duplicado em qualquer lugar pelo DropBox).

Como em outros arquivos .desktop, as permissões devem ser definidas para que o arquivo seja legível e executável (por exemplo, chmod 700 Python.desktopou chmod 755 Python.desktop) para que o ícone indicado seja exibido e clique duas vezes nele para realmente fazer alguma coisa.

Sumário

Em resumo, então, sempre terei os arquivos reais disponíveis em algum lugar do DropBox --- neste exemplo, /home/morse/lib/active/GoodReader/Books/Python--- mas também terei um "atalho" na área de trabalho em todos os meus sistemas baseados em Linux para os quais também tem o DropBox configurado.

Obviamente, essa solução alternativa não funciona no nível da linha de comando, como faria um verdadeiro link simbólico.

Dito isto, essa parece ser uma nova solução alternativa no nível da GUI, que eu não vi postada em nenhum outro lugar. Portanto, espero que essa abordagem possa ser útil para outras pessoas.

Doug Morse
fonte
Isso é genial! Eu não vi uma solução para links simbólicos internos até agora! E isso é super arrumado. Obrigado por fazer o meu dia! Devo acrescentar que deve ser bastante simples criar um script de linha de comando, que analise um arquivo .desktop e abra o arquivo ou pasta com o link simbólico, embora você não consiga "cd" diretamente no diretório.
Praveen
0

Comprima seus links e salve o arquivo compactado no Dropbox

As respostas anteriores são exaustivas e claras. Eu apenas sugiro três soluções alternativas, com base em um único princípio. O terceiro parece mais difícil, mas é muito eficiente. A idéia é: compactar seus links simbólicos em um arquivo tar, que o Dropbox não tratará como um link, e salve-o no Dropbox. A terceira maneira é quase tão direta quanto copiar seus links diretamente para o Dropbox - na verdade, muito mais rápido do que copiar vários links, um por um.

Eu tenho cerca de vinte links simbólicos que normalmente uso na minha instalação do Lubuntu, por exemplo, para acesso rápido a scripts bash salvos no Dropbox, a discos rígidos externos, a documentos usados ​​com frequência etc. Eles estão todos no meu diretório pessoal e na área de trabalho, e acho que É conveniente ter uma cópia do Dropbox para usar em outras instalações ou quando eu fizer o upgrade à distância (ou seja, quando eu reinstalar depois de tentar fazer o upgrade à distância;).

1ª via

Você cria um diretório chamado MyLinks (por exemplo, em Documentos) e copia todos os links simbólicos da sua casa; se você tiver links simbólicos em outros diretórios, crie subdiretórios no MyLinks e copie seus links simbólicos para eles. Por exemplo, se os links que você deseja salvar estiverem em casa e na área de trabalho, copie os links pessoais para MyLinks, crie um diretório chamado Área de Trabalho nele e copie os links da Área de Trabalho. Em seguida, abra um terminal, cd Documents (desde que este seja o diretório onde está o MyLinks) e crie um arquivo tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Lembre-se de adicionar a extensão ".tar" ao nome do arquivo tarfile ou o Ubuntu Archive Manager se recusaria a abri-lo.) Se você fizer isso, tome cuidado para não adicionar a opção -h (--dereference) ao tar porque se comportaria com precisão como Dropbox e compactaria os arquivos de destino em vez dos links simbólicos. (A propósito, esse comportamento seria bem-vindo na maioria dos casos, especialmente se alguém visa à portabilidade, mas não é o caso de querer salvar os links simbólicos como links simbólicos.)

O arquivo tar também incluiria links quebrados temporariamente, como links para hdds externos não montados atualmente - o que é bom.

Salve o arquivo tar no seu Dropbox. Quando você precisar voltar os links, copie o arquivo tar para um diretório em seu sistema de arquivos (não no Dropbox), extraia-o (clique com o botão direito do mouse e escolha "Extrair aqui") e copie seus links simbólicos de volta para os locais em que deseja .

2ª via

Se os links simbólicos que você deseja salvar tiverem um prefixo unívoco (como "MySl" ...), você poderá criar seu tarfile rapidamente dessa maneira (espaços desnecessários adicionados para evitar erros):

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

O único ponto após "localizar" significa o diretório atual: abra o Terminal no diretório inicial (como padrão). Você certamente pode adicionar um caminho ao arquivo tar e pode emitir o comando de outro diretório que não esteja em casa: substitua o "." com o caminho para sua casa / usuário. Não há necessidade de criar diretórios de trabalho como os MyLinks acima. A restauração dos links simbólicos também é rápida: você copia o arquivo tarfile para sua casa, clica com o botão direito do mouse e "extrai aqui". No entanto, antes de começar a prefixar todos os nomes dos seus links simbólicos, dê uma olhada na próxima opção.

3ª via (e melhor)

Uma maneira muito rápida de coletar todos os seus links simbólicos em um arquivo tar é: abra um Terminal em sua casa / usuário (que é o padrão quando você abre um Terminal) e:

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

A desvantagem é que você inclui TODOS os seus links, incluindo alguns links simbólicos mozilla ou hplip que você nem sabia que tinha. Para evitar isso e copiar todos e somente os links simbólicos de uma lista especificada de diretórios sem recursão , escreva a lista após "localizar" no comando acima. Digamos que você queira salvar os links de casa / usuário e área de trabalho; você pode escrever

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

"-maxdepth 1" é para impedir que a localização ocorra novamente em casa. Você pode adicionar um caminho para tarfile, se desejar. Alternativamente:

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

Se você é preguiçoso e deseja usá-lo com frequência, pode adicioná-lo como um alias para .bashrc ou .bash_aliases em seu diretório pessoal (.bash_aliases é uma maneira muito conveniente de coletar seus aliases e, por que não, salvá-los em Dropbox...). Basta criar um novo arquivo vazio chamado .bash_aliases em seu diretório pessoal (ou seja, / home / user), abra-o com um editor de texto e escreva a seguinte linha:

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

Substitua os diretórios após "localizar" pelos de sua escolha e "save_symlinks" pelo nome de comando de sua escolha. Para restaurar, abra o gerenciador de arquivos (se o caminho para os diretórios no comando acima não for absoluto, o tarfile deve estar em casa / usuário), clique com o botão direito e extraia.

Se você fizer isso, a vida é mais fácil. Tudo o que tem a fazer é:

SALVAR: digite save_symlinks no Terminal, salve o arquivo tar em sua casa no Dropbox; RESTAURAR: copie o arquivo do Dropbox para o diretório inicial, clique com o botão direito do mouse e selecione "extrair aqui".

archie
fonte