Dropbox'ta sembolik bağlantılar nasıl çalışır?


20

Bir klasördeki dosyalara bazı bağlantılar yaptım. Bu klasörü Dropbox'a eklediğimde, bağlantılar bağlı olan dosyaların yinelenen kopyalarını içeriyordu. Bu probleminiz oldu mu? Ne olduğunu anlıyor musun? Bir çözüm var mı?

Bu soruyu daha açık hale getirmek için: Dosya yöneticisinin "tür" sütununda, Dropbox'a bağlanmadan önce Link_to_notes bir bağlantı olarak gösterildi ve boyutu 32 bayt oldu. Dropbox'a bağlandıktan sonra Link_to_notes öğesinin düz metin belgesi olduğu ve boyut dosyasının 18.7 kB boyutunda olduğu gösterildi.


2
Dropbox platformlar arası bir çözüm olduğundan, diğer tüm davranışlar daha da kafa karıştırıcı olacaktır - klasörünüzü bir Windows makinesiyle senkronize ederseniz nasıl davranır?
Sergey

2019 ortasından bu yana, Dropbox artık
simgeleri

Şu anki yazı itibariyle, semboller artık çalışmıyor ve berbat.
Jus12

Yanıtlar:


15

DropBox sembolik bağlantıları takip eder ve bunları dizin olarak kabul eder. Dosyaları ve dizinleri DropBox dizininize taşımak zorunda kalmadan yedeklemek için gerçekten yararlıdır.

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

Bu tehlikeli bir davranış olabilir. Örneğin, bağlantıyı Dropbox dizininden silersem, yanlışlıkla orijinal dosyalarımı veya klasörleri de silebileceğim herhangi bir senaryo var mı?
Vicon

@Vicon, bu tehlikeli bir davranış değil, beklenen bir davranış. Ancak evet, net olmak gerekirse, sembolik bağlantıyı kaldırırsanız, dosyalar Dropbox'tan da kaldırılacaktır
Gregology

2
Dropbox topluluğunda, Dropbox'ın sembolik bağlantıları desteklemediğini ve kullanılmasına karşı şiddetle tavsiye etmediğini defalarca belirtmiştir. Dropbox müşteri desteğine başvurursanız, devam etmeden önce herhangi bir sembolik bağlantıyı kaldırmanızı isteyeceklerdir. Tabii ki, insanlar yine de kullanabilir, ancak bu Dropbox tarafından tasarlanan bir davranış değildir ve tehlikeli (dosyaları kaybetmek), sorunlu olabilir (yanlışlıkla kopyalanan dosyaları istemeden senkronize etmek, bu soruda çözülmesi istenen sorun) performans sorunları vb. olarak senkronize etme
Vicon

@Vicon, sembolik bağlantılar birçok işlem için şeffaf bir şekilde çalışır: sembolik bir bağlantıyla adlandırılan dosyaları okuyan veya bunlara yazılan programlar doğrudan hedef dosyada çalışıyormuş gibi davranır
Gregology

1
Bu yöntem ext4 dosya sistemlerinde uzun zamandır benim için iyi çalıştı. Herhangi bir tehlike hissim yok çünkü Dropbox içindeki Dropbox dosyalarıyla asla etkileşimde bulunmam. Linux sistemlerimi ve Android tabletlerimi birbirine bağlamayı başarıyor. Ancak, bu bağlantının tavsiyemin güncel olmadığını
pauljohn32

7

Bunu yapmanın en iyi yolu, dosyaları dropbox klasöründe saklamak ve dışarıdan bunlara simge eklemek ...

Bu yüzden ~ / Dropbox / Documents ve symlink oluşturun:

ln -s ~/Dropbox/Documents ~/Documents

Bu, dropbox'ın karışmasını ve içerideki bir bağlantı olan her şeyin bağlantısını kaldırmayı durdurur, çünkü içerideki tüm şeylere sahipsiniz ve bunun yerine başka bir yerde istediğinizde dropbox'ta onlara bağlanırsınız. Temel kural, dropbox klasörünün herhangi bir yerinde herhangi bir sembolik bağlantının olmaması ... onları dropbox klasörünün dışında bulundurmaktır ve sorun yaşamayacaksınız.

Birkaç ubuntu makinede dropbox var ve tüm büyük üst düzey klasörlerim aslında dropbox'ta saklanıyor.


Dropbox neden karıştı? Dropbox sembolik bağlantıları nasıl değiştirir? Sembolik bağlantılar dosya sistemi tarafından otomatik olarak çözümlenir
Gregology

6

dropbox dizinlerin sym bağlantılarını takip edecek, ancak bir dosyaya bir bağlantı (sym veya hard) kesecek ve bir dosya ile değiştirecektir.


2

TL; DR: Aşağıda ise özellikle yararlıdır sadece (GUI) seviyesini grafiksel kullanıcı arayüzüne, sembolik bağlantıları oldukça benzer davranış almanın bir yolu vardır değil mi defalarca DropBox içinde farklı klasörlere aynı dosya kopyalama DropBox istiyorum hiyerarşi, onları farklı yerlerden görüntülemek istediğiniz için (yani klasör yolları).

Arka fon

Hesabımı doldurma noktasına kadar bile DropBox klasör hiyerarşisinde sembolik bağlantılar (semboller) oluşturursam, birden fazla kez DropBox klasörleri çoğalttım. Birçoğunun web'de belirttiği gibi, DropBox'ın sembolik bağlantılara düzgün davranmaması için gerçek bir düzeltme yoktur, bu da onlar için zor olmayacağı için talihsizdir.

Geçici çözüm

Ancak, DropBox hiyerarşisi içinde sembolik eşdeğer davranış elde etmek için kullandığım bir geçici çözüm --- diğerlerinin genellikle "iç semboller" olarak adlandırdığı --- her şeyi çoğaltmadan DropBox olmadan bir Windows kısayol dosyasının eşdeğerini (yani , MS ekosistemindeki bir .lnk dosyası). Bunu sistemimin dosya yöneticisini istenen yola açan bir .desktop dosyası oluşturarak yapıyorum. Bu nedenle, bu geçici çözüm yalnızca GUI düzeyinde ve yalnızca XDG uyumlu sistemler (örn. Ubuntu, GNOME tabanlı sistemler, diğerleri) için çalışır.

Misal

Örneğin, aldığım yeni bir iş için gelişmiş Python tekniklerini okuyorum ve okuduğum PDF'ler GoodReader Uygulaması (iOS) için DropBox klasörümde saklanıyor, böylece her ikisini de masaüstümde okuyabilirim ve mobil cihazlarımla. Bu klasöre ( /home/morse/lib/active/GoodReader/Books/Python) inmek zorunda kalmak yerine , aşağıdaki içeriklere sahip bir Python.desktopklasör oluşturuyorum /home/morse/Desktop:

#!/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

(Not: uyarlamak için emin olun Exec=nautilus ...Eğer Nautilus dışında bir dosya yöneticisi kullanıyorsanız bölümünü ve tabii size uyarlamak isteyeceklerdir Name=, Icon=bir ve yol kısmıExec= her bir "sembolik bağ" oluşturmak istediğiniz için hat.)

Bununla, masaüstümde sembolik bir bağlantı gibi davranan Python adlı bir klasör görüyorum --- yani, çift tıklıyorum ve uygun klasörü açıyor - ancak sadece küçük bir metin dosyası (örn., Python. masaüstü) DropBox ve diğer sistemlerimle senkronize olur (sonunda tüm içeriklerin aksine DropBox tarafından her yerde kopyalanır).

Diğer .desktop dosyalarında olduğu gibi, izinler dosya olacak şekilde ayarlanmalıdır hem (okunabilir ve çalıştırılabilir örn chmod 700 Python.desktopveyachmod 755 Python.desktop , belirtilen simgenin görüntülenmesi ve gerçekte herhangi bir şey yapması için çift tıklanması ) .

özet

Özetle, o zaman, gerçek dosyaları her zaman DropBox içinde bir yerde tutacağım --- bu örnekte, /home/morse/lib/active/GoodReader/Books/Python olacağım --- --- ama aynı zamanda tüm linux tabanlı sistemlerim için bir masaüstü "kısayoluna" sahip olacağım ayrıca DropBox yapılandırılmış.

Tabii ki, bu geçici çözüm, gerçek bir sembolik bağlantı gibi komut satırı düzeyinde çalışmaz.

Bununla birlikte, bu GUI düzeyinde yeni bir çözüm gibi görünüyor, başka bir yerde yayınlanmadığını görüyorum. Umarım bu yaklaşım başkaları için de yararlı olabilir.


Bu dahi! Şimdiye kadar iç semboller için bir çözüm görmedim! Ve bu çok temiz. Benim günümü yaptığın için teşekkür ederim! Doğrudan bir dizine "cd" mümkün olmayabilir olsa da, bir .desktop dosyasını ayrıştırır ve symlinked dosya veya klasörü açar bir komut satırı komut dosyası yapmak oldukça basit olması gerektiğini eklemeliyim.
Praveen

0

Bağlantılarınızı sıkıştırın ve sıkıştırılmış dosyayı Dropbox'a kaydedin

Önceki yanıtlar ayrıntılı ve açıktır. Tek bir ilkeye dayanan üç geçici çözüm öneririm. Üçüncüsü daha zor görünüyor ama çok verimli. Fikir şudur: sembolik bağlantılarınızı Dropbox'ın link olarak işlemeyeceği bir tar dosyasına sıkıştırın ve Dropbox'a kaydedin. Üçüncü yol, bağlantılarınızı doğrudan Dropbox'ınıza kopyalamak kadar doğrudan - aslında birkaç bağlantıyı tek tek kopyalamaktan çok daha hızlı.

Normalde Lubuntu kurulumumda kullandığım yirmi sembolik bağlantım var, örneğin Dropbox'a kaydedilmiş bash komut dosyalarına, harici hdd'lere, sık kullanılan belgelere vb. Hızlı erişim için. diğer kurulumlarda veya dist-yükseltme yaparken (yani, dist-yükseltmeye çalıştıktan sonra yeniden yüklediğimde) bir Dropbox kopyasına sahip olmak uygun.

1. yol

MyLinks (örneğin Belgeler'de) adlı bir dizin oluşturursunuz ve tüm ev sembollerinizi bu dizine kopyalarsınız; diğer dizinlerde sembol bağlantılarınız varsa, MyLinks'te alt dizinler oluşturun ve sembol bağlantılarınızı bunlara kopyalayın. Örneğin, kaydetmek istediğiniz bağlantılar evde ve Masaüstündeyse, ev bağlantılarını MyLinks'e kopyalayın, içinde Masaüstü adlı bir dizin yapın ve Masaüstü bağlantılarını buna kopyalayın. Sonra bir Terminal, cd Documents (MyLinks'in bulunduğu dizin olması şartıyla) açın ve bir tar dosyası oluşturun:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Tarfile adına ".tar" uzantısını eklemeyi unutmayın, yoksa Ubuntu Archive Manager bunu açmayı reddedecektir.) Bunu yaparsanız, tar'a -h (--dereference) seçeneğini eklememeye dikkat edin, çünkü Dropbox gibi davranır ve sembolik bağlantılar yerine hedef dosyaları sıkıştırır . (Bu arada, böyle bir davranış, çoğu durumda, özellikle taşınabilirliği hedefliyorsa, ancak sembolik bağlantıları sembolik olarak kaydetmek istiyorsa değil).

Tar dosyası ayrıca, şu anda monte edilmemiş harici hdd'lere bağlantılar gibi geçici olarak kesilmiş bağlantılar da içerir - bu da iyidir.

Tar dosyasını Dropbox'ınıza kaydedin. Geri bağlantılara ihtiyacınız olduğunda, tar dosyasını dosya sisteminizdeki (Dropbox içinde değil) bir dizine kopyalayın, çıkarın (sadece sağ tıklayın ve "Buraya çıkart" ı seçin) ve sembolik bağlantılarınızı istediğiniz konumlara geri kopyalayın .

2. yol

Kaydetmek istediğiniz sembolik bağlantıların tek odaklı bir öneki ("MySl" ... gibi) varsa, bu şekilde çok hızlı bir şekilde tarfile yapabilirsiniz (hataları önlemek için gereksiz boşluklar eklenir):

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

"Bul" işleminden sonraki tek nokta geçerli dizin anlamına gelir: Terminal'i ana dizinde açın (varsayılan olarak). Tar dosyasına kesinlikle bir yol ekleyebilir ve komutu home olmayan başka bir dizinden verebilirsiniz: "." ev / kullanıcı yolunuz ile. Yukarıdaki MyLinks gibi çalışma dizinleri oluşturmanıza gerek yoktur. Sembolleri geri yüklemek de hızlıdır: tarfile evinize kopyalayın, sağ tıklayın ve "buradan çıkartın". Ancak, sembol bağlantılarınızın tüm isimlerini önek eklemeye başlamadan önce bir sonraki seçeneğe bakın.

3. yol (ve en iyisi)

Bir tar dosyasında tüm sembol bağlantılarınızı toplamanın çok hızlı bir yolu: evinizde / kullanıcınızda bir Terminal açmak (bir Terminal açtığınızda varsayılan) ve:

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

Dezavantajı, içinde bile bilmiyordum bazı mozilla veya hplip semboller de dahil olmak üzere TÜM bağlantılarınızı olsun. Bundan kaçınmak ve belirli bir dizinler listesindeki özyinelemeleri yinelemesiz kopyalamak için, yukarıdaki komutta "find" ifadesinden sonra listeyi yazarsınız. Ev / kullanıcı ve Masaüstü bağlantılarını kaydetmek istediğinizi varsayalım; Yazabilirsin

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

"-maxdepth 1", bulgunun evde tekrarlanmasını önlemektir. İsterseniz tarfile bir yol ekleyebilirsiniz. Alternatif:

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

Eğer tembelseniz ve bunu sık sık kullanmak istiyorsanız, ev dizinizdeki .bashrc veya .bash_aliases'a bir takma ad olarak ekleyebilirsiniz (.bash_aliases, takma adlarınızı toplamak için çok uygun bir yoldur ve neden bunları kaydetmemek için Dropbox ...). Ana dizinde .bash_aliases adlı yeni bir boş dosya oluşturun (/ home / user), bir metin düzenleyicisiyle açın ve içine aşağıdaki satırı yazın:

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

"Find" komutundan sonra ve "save_symlinks" ifadesini seçtiğiniz bir komut adıyla değiştirin. Geri yüklemek için Dosya yöneticinizi açın (yukarıdaki komuttaki dizinlerin yolu mutlak değilse, tarfile ev / kullanıcı olmalıdır), sağ tıklayın ve ayıklayın.

Bunu yaparsanız, hayat daha kolaydır. Tüm yapman gereken:

KAYDET: Terminal'e save_symlinks yazın, evinizdeki tarfini Dropbox'a kaydedin; RESTORE: dosyayı Dropbox'tan ev dizininize kopyalayın, sağ tıklayın ve "buradan çıkart" ı seçin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.