O dropbox sincroniza hardlinks?

4

Eu tenho uma pasta de arquivos grandes. Eu quero que a pasta esteja em dois lugares diferentes ao mesmo tempo - meus documentos internos e minha pasta de documentos da faculdade.

Eu fiz isso com um link simbólico na pasta do College para a pasta Home.

Infelizmente, o Dropbox sincroniza minha pasta do College e meu espaço no arquivo foi rapidamente esgotado.

O dropbox segue os hard links e, em caso afirmativo, como crio um?

    
por Tim 11.04.2016 / 19:49

2 respostas

2

Não, isso não acontece.

Quando você atualiza um arquivo, o Dropbox quebra todos os links. Assim, no exemplo acima, o @Falk dá a resposta, se ele editou esse arquivo de um computador remoto, quando ele sincronizou de volta o link seria quebrado, e o Dropbox conteria um novo arquivo chamado testfile (Falks conflicted copy) .

O único link que funciona é um link macio onde o arquivo original é aquele na pasta dropbox. Aqui está o script que eu usei para testar:

# symlink with target inside dropbox
echo "symbolic link test" > ~/Dropbox/symlinkToDropbox.txt
ln -s  ~/Dropbox/symlinkToDropbox.txt ~/symlinkToDropbox.txt
cat ~/symlinkToDropbox.txt
echo "edit target of symlink" >> ~/Dropbox/symlinkToDropbox.txt
echo "edit symlink" >> ~/symlinkToDropbox.txt 
cat ~/symlinkToDropbox.txt 
cat ~/Dropbox/symlinkToDropbox.txt 
# symlink with target outside dropbox 
echo "symbolic link test" > ~/symlinkFromDropbox.txt
ln -s ~/symlinkFromDropbox.txt ~/Dropbox/symlinkFromDropbox.txt  # relative symlinks don't work
cat ~/Dropbox/symlinkFromDropbox.txt 
echo "edit target of symlink" >> ~/symlinkFromDropbox.txt
echo "edit symlink" >> ~/Dropbox/symlinkFromDropbox.txt
cat ~/symlinkFromDropbox.txt 
cat ~/Dropbox/symlinkFromDropbox.txt 
# hard link with target inside dropbox
echo "hard link test" > ~/Dropbox/hardlinkToDropbox.txt
ln ~/Dropbox/hardlinkToDropbox.txt ~/hardlinkToDropbox.txt
echo "edit target" >> ~/Dropbox/hardlinkToDropbox.txt 
echo "edit linked file" >> ~/hardlinkToDropbox.txt 
cat ~/hardlinkToDropbox.txt 
cat ~/Dropbox/hardlinkToDropbox.txt 
# hard link with target inside dropbox
echo "hard link test" > ~/hardlinkFromDropbox.txt
ln ~/hardlinkFromDropbox.txt  ~/Dropbox/hardlinkFromDropbox.txt
echo "edit linked file" >> ~/Dropbox/hardlinkFromDropbox.txt 
echo "edit target" >> ~/hardlinkFromDropbox.txt 
cat ~/Dropbox/hardlinkFromDropbox.txt 
cat ~/hardlinkFromDropbox.txt 
#all of that works fine.  
#But now open all of those files from your dropbox folder on another computer and edit them
#Your dropbox will sync, your local versions of all those files will be updated, but NONE OF THE LINKED FILES WILL UPDATE
#The hard links are replaced and the old versions copied as "conflicted copies"
#The symlink where the dropbox file was the link is unlinked

#the symlink where the dropbox file is the original is the only one that works
    
por andrew lorien 17.11.2016 / 02:44
2

Acontece que esta resposta foi um erro, veja o post de Andrew para a resposta correta.

Sim, eu faço.

Eu testei com uma conta de caixa de depósito gratuita padrão com a pasta dropbox em um volume btrfs.

O teste foi:

ln /media/username/volume/Documents/testfile /media/username/volume/Dropbox/testfile
ls -li /media/username/volume/Documents/testfile
ls -li /media/username/volume/Dropbox/testfile

O primeiro número do comando ls -li mostra o número do inode, o número entre as permissões e o nome do usuário é o contador do link (mostra quantos links físicos o arquivo possui).

Imediatamente após executar o comando ln, o ícone de teste da caixa de depósito mostrou a atividade e fez o upload do arquivo de teste.

Também testei para criar um segundo link físico dentro da pasta do Dropbox e também enviei o arquivo, não sei se ele sabe que é apenas um.

Meu arquivo de teste é um pequeno arquivo de 18 KB .ods, mas também deve trabalhar com arquivos maiores.

Sobre links de hardware e inodes:

Quando você cria um link físico de um arquivo, você está dando apenas um segundo nome em uma pasta diferente (ou o mesmo, se quiser).

Estes arquivos não são realmente colocados em pastas que estão no disco rígido identificado por um i-node (depende do tipo de sistema de arquivos).

Então, quais são as pastas?

Pasta são apenas listas também identificadas por um nó i que contém os nomes dos arquivos e outras pastas que estão "dentro" deles. Cada elemento nesta lista aponta para o nó i correspondente.

Portanto, se você criar links físicos, ambos / todos apontarão para o mesmo i-node e, portanto, todos eles são apenas arquivos (o mesmo).

Esteja ciente de que alguns aplicativos se recusam a fazer seu trabalho com arquivos que possuem links físicos. Outros aplicativos podem acidentalmente ou intencionalmente quebrar hard links transformando um arquivo com 2 nomes em dois arquivos com um nome cada.

A Wikipedia nos fornece mais informações:

link

link

Para criar links físicos, você pode usar ln , que é uma ferramenta de linha de comando. Você pode usá-lo assim:

ln TARGET LINK_NAME

Em que target é o arquivo existente e link_name o novo nome do arquivo. Quando terminar, verifique com ls -li o número do nó i do arquivo e veja se ambos os links têm o mesmo número.

Aqui está a página man: link

    
por Falk 11.04.2016 / 21:32