Bagaimana cara kerja tautan simbolis di Dropbox?

20

Saya membuat beberapa tautan ke file di folder. Ketika saya menambahkan folder itu ke Dropbox, tautan berisi salinan duplikat dari file yang ditautkan. Sudahkah Anda mengalami masalah ini? Apakah Anda mengerti apa yang terjadi? Apakah ada solusinya?

Untuk membuat pertanyaan ini lebih jelas: Di kolom "ketik" manajer file, sebelum menghubungkan ke Dropbox, Link_to_notes ditunjukkan menjadi tautan dan ukurannya 32 byte. Setelah tersambung ke Dropbox, Link_to_notes ditunjukkan menjadi dokumen teks biasa dan ukurannya 18,7 kB, ukuran file catatan.

pengguna119046
sumber
2
Dengan Dropbox menjadi solusi lintas platform, setiap perilaku lain mungkin akan lebih membingungkan - bagaimana kelakuannya jika Anda menyinkronkan folder Anda dengan mesin Windows?
Sergey
Sejak pertengahan 2019, Dropbox tidak lagi mengikuti symlink
eri0o
Pada tulisan saat ini, symlink tidak lagi berfungsi, dan itu menyebalkan.
Jus12

Jawaban:

15

DropBox mengikuti tautan simbolis dan memperlakukannya sebagai direktori. Ini sangat berguna untuk membuat cadangan tanpa harus memindahkan file dan direktori ke direktori DropBox Anda.

$ ln -s ~/Documents/ ~/Dropbox/Documents
Gregologi
sumber
Ini bisa menjadi perilaku berbahaya. Misalnya, jika saya menghapus tautan dari direktori Dropbox, apakah mungkin ada skenario bahwa saya dapat secara tidak sengaja menghapus file atau folder asli saya juga?
Vicon
@Vicon, itu bukan perilaku berbahaya, itu perilaku yang diharapkan. Tapi ya, untuk menjadi jelas, jika Anda menghapus tautan simbolis, file juga akan dihapus dari Dropbox
Gregology
2
Di komunitas Dropbox, telah berulang kali dinyatakan bahwa Dropbox tidak mendukung tautan simbolis dan sangat menyarankan untuk tidak menggunakannya. Jika Anda menghubungi dukungan pelanggan Dropbox, mereka akan meminta Anda untuk menghapus tautan simbolis apa pun sebelum melanjutkan. Tentu, orang masih dapat menggunakannya, tetapi ini bukan perilaku yang dimaksudkan oleh Dropbox, dan bisa berbahaya (kehilangan file), bermasalah (memiliki file duplikat yang tidak disinkronkan secara tidak sengaja, yang merupakan masalah yang diminta untuk diselesaikan dalam pertanyaan ini), juga sebagai penyelarasan masalah kinerja, dll.
Vicon
@Vicon, tautan simbolik beroperasi secara transparan untuk banyak operasi: program yang membaca atau menulis ke file yang diberi nama tautan simbolik akan berperilaku seolah-olah beroperasi langsung pada file target
Gregology
1
Metode ini telah bekerja dengan baik bagi saya untuk waktu yang lama dalam sistem file ext4. Saya tidak memiliki perasaan bahaya karena saya tidak pernah berinteraksi dengan file Dropbox di dalam Dropbox. Ini berhasil menghubungkan sistem Linux dan tablet Android saya. Namun, saya perhatikan tautan ini mengatakan saran saya ketinggalan zaman help.dropbox.com/installs-integrations/sync-uploads/symlinks
pauljohn32
7

Cara terbaik untuk melakukannya adalah dengan menyimpan file di folder dropbox dan symlink ke mereka dari luar ...

Jadi buat ~ / Dropbox / Dokumen dan symlink:

ln -s ~/Dropbox/Documents ~/Documents

Ini berhenti dropbox menjadi bingung dan menghapus tautan apa pun yang merupakan tautan di dalamnya karena Anda memiliki semua hal di dalamnya dan sebaliknya ketika Anda menginginkannya di tempat lain, Anda menautkannya di dropbox. Aturan dasarnya adalah tidak ada symlink mana pun di dalam folder dropbox ... memilikinya di luar folder dropbox dan Anda tidak akan memiliki masalah.

Saya memiliki dropbox di beberapa mesin ubuntu dan semua folder top level utama saya disimpan di dropbox.

JamesC
sumber
Mengapa Dropbox menjadi bingung? Dan bagaimana Dropbox mengubah tautan simbolik? Tautan simbolik secara otomatis diselesaikan oleh sistem file
Gregology
6

dropbox akan mengikuti tautan sym ke direktori, tetapi itu akan memecah tautan (baik sym atau hard) ke file dan menggantinya dengan file.

brad80242
sumber
2

TL; DR: Di bawah ini adalah cara untuk mendapatkan perilaku yang sangat mirip dengan tautan simbolis, pada tingkat antarmuka pengguna grafis (GUI) saja, yang sangat membantu jika Anda tidak ingin DropBox berulang kali menyalin file yang sama ke folder berbeda di dalam DropBox hierarki hanya karena Anda ingin melihatnya dari tempat yang berbeda (yaitu, jalur folder).

Latar Belakang

Lebih dari sekali saya telah dibakar oleh folder duplikat DropBox jika saya membuat tautan simbolik (symlink) dalam hierarki folder DropBox, bahkan sampai pada titik mengisi akun saya. Seperti yang banyak dicatat di web, tidak ada perbaikan nyata karena DropBox kurang memperlakukan tautan simbolis dengan benar, yang sangat disayangkan karena tidak akan sulit bagi mereka untuk melakukannya.

Penanganan masalah

Namun, satu solusi yang saya gunakan untuk mencapai perilaku setara symlink dalam hierarki DropBox --- apa yang orang lain sering sebut sebagai "symlink internal" --- tanpa DropBox menduplikasi semuanya adalah untuk membuat yang setara dengan file shortcut Windows (yaitu , file .lnk di ekosistem MS). Saya melakukannya dengan membuat file .desktop yang membuka pengelola file sistem saya ke jalur yang diinginkan. Dengan demikian, solusi ini hanya berfungsi pada tingkat GUI dan hanya untuk sistem yang sesuai XDG (misalnya, Ubuntu, sistem berbasis GNOME, banyak lainnya).

Contoh

Misalnya, saya membaca tentang teknik Python canggih untuk pekerjaan baru yang saya ambil, dan PDF yang saya baca disimpan di folder DropBox saya untuk GoodReader App (iOS) sehingga saya bisa membacanya di desktop saya dan dengan perangkat seluler saya. Daripada harus menelusuri ke folder itu ( /home/morse/lib/active/GoodReader/Books/Python), saya cukup membuat Python.desktopfolder di bawah /home/morse/Desktopdengan konten berikut:

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

(Catatan: Pastikan untuk menyesuaikan Exec=nautilus ...porsi jika Anda menggunakan file manager selain Nautilus, dan tentu saja Anda akan ingin mengadaptasi Name=, Icon=dan sebagian jalan dari Exec=baris untuk setiap "symlink" Anda ingin membuat.)

Dengan ini, saya melihat folder bernama Python di desktop saya yang bertindak seperti tautan simbolis --- yaitu, saya klik dua kali dan membuka folder yang sesuai --- tetapi hanya file teks kecil (misalnya, Python. desktop) disinkronkan ke DropBox dan sistem saya yang lain (yang bertentangan dengan semua konten yang akhirnya diduplikasi di mana-mana oleh DropBox).

Seperti halnya file .desktop lainnya, izin harus diatur sedemikian rupa sehingga file tersebut dapat dibaca dan dieksekusi (misalnya, chmod 700 Python.desktopatau chmod 755 Python.desktop) untuk ditampilkan ikon yang ditunjukkan dan untuk mengklik dua kali untuk benar-benar melakukan apa pun.

Ringkasan

Singkatnya, kemudian, saya akan selalu memiliki file aktual yang tersedia di suatu tempat di dalam DropBox --- dalam contoh ini, /home/morse/lib/active/GoodReader/Books/Python--- tetapi saya juga akan memiliki "pintasan" desktop di seluruh sistem berbasis linux yang saya gunakan. DropBox juga sudah dikonfigurasi.

Tentu saja, solusi ini tidak berfungsi pada level baris perintah, seperti yang dilakukan symlink sebenarnya.

Yang mengatakan, ini tampaknya menjadi solusi baru di tingkat GUI, yang saya belum pernah melihat diposting di tempat lain. Jadi, saya berharap pendekatan ini dapat bermanfaat bagi orang lain.

Doug Morse
sumber
Ini jenius! Saya belum melihat solusi untuk symlink internal sampai sekarang! Dan ini sangat rapi. Terima kasih telah membuat hari saya! Saya harus menambahkan bahwa itu harus cukup mudah untuk membuat skrip baris perintah, yang mem-parsing file .desktop dan membuka file atau folder yang disinkronkan, meskipun Anda mungkin tidak dapat "cd" ke direktori secara langsung.
Praveen
0

Kompres tautan Anda dan simpan file terkompresi ke Dropbox

Balasan sebelumnya lengkap dan jelas. Saya hanya menyarankan tiga solusi, berdasarkan pada satu prinsip. Yang ketiga terlihat lebih sulit tetapi sangat efisien. Idenya adalah: kompres symlink Anda ke file tar, yang tidak akan diperlakukan Dropbox sebagai tautan, dan simpan ke Dropbox. Cara ketiga hampir sama langsung dengan menyalin tautan Anda langsung ke Dropbox Anda - sebenarnya jauh lebih cepat daripada menyalin beberapa tautan satu per satu.

Saya memiliki sekitar dua puluh tautan simbolis yang biasanya saya gunakan dalam instalasi Lubuntu saya, misalnya untuk akses cepat ke skrip bash yang disimpan di Dropbox, ke hdds eksternal, ke dokumen yang sering digunakan, dll. Semuanya ada di direktori home saya dan di Desktop dan saya menemukannya nyaman untuk memiliki salinan Dropbox dari mereka untuk digunakan untuk instalasi lain atau ketika saya memperbarui (yaitu, ketika saya menginstal ulang setelah mencoba untuk memperbarui);

Cara 1

Anda membuat direktori bernama MyLinks (katakanlah, dalam Dokumen) dan salin semua symlink rumah Anda ke sana; jika Anda memiliki symlink di direktori lain, buat subdirektori di MyLinks dan salin symlink Anda ke direktori tersebut. Misalnya, jika tautan yang ingin Anda simpan ada di rumah dan di Desktop, salin tautan rumah ke MyLinks, buat direktori yang disebut Desktop di dalamnya dan salin tautan Desktop ke sana. Kemudian buka Terminal, cd Documents (asalkan ini adalah direktori tempat MyLinks berada) dan buat file tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Ingatlah untuk menambahkan ekstensi ".tar" ke nama tarfile, atau Ubuntu Archive Manager akan menolak untuk membukanya.) Jika Anda melakukan ini, berhati-hatilah untuk tidak menambahkan opsi -h (--dereference) ke tar karena itu akan berperilaku tepat sebagai Dropbox dan kompres file target alih-alih symlink. (Ngomong-ngomong, perilaku seperti itu akan diterima dalam kebanyakan kasus, terutama jika seseorang bertujuan portabilitas, tetapi tidak jika seseorang ingin menyimpan symlink sebagai symlink.)

File tar juga akan menyertakan tautan yang rusak sementara, seperti tautan ke hdds eksternal yang saat ini tidak dipasang - yang baik-baik saja.

Simpan file tar di Dropbox Anda. Saat Anda membutuhkan tautan kembali, salin file tar ke direktori di sistem file Anda (bukan di dalam Dropbox), ekstrak (klik kanan dan pilih "Ekstrak di sini") dan salin tautan simbolis Anda kembali ke lokasi di mana Anda menginginkannya .

2nd way

Jika symlink yang ingin Anda simpan memiliki awalan univocal (seperti "MySl" ...) Anda dapat dengan cepat membuat tarfile dengan cara ini (ruang yang tidak perlu ditambahkan untuk mencegah kesalahan):

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

Satu titik setelah "find" berarti direktori saat ini: buka Terminal di dir home Anda (seperti secara default). Anda pasti dapat menambahkan path ke file tar dan Anda dapat mengeluarkan perintah dari direktori lain yang bukan rumah: ganti "." dengan jalur ke rumah / pengguna Anda. Tidak perlu membuat direktori kerja seperti MyLinks di atas. Memulihkan symlink juga cepat: Anda menyalin tarfile ke rumah Anda, klik kanan padanya dan "ekstrak di sini". Namun, sebelum mulai untuk awalan semua nama symlink Anda, lihat opsi berikutnya.

Cara ke-3 (dan terbaik)

Cara yang sangat cepat untuk mengumpulkan semua symlink Anda dalam file tar adalah: buka Terminal di rumah / pengguna Anda (yang default ketika Anda membuka Terminal) dan:

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

Kekurangannya adalah, Anda mendapatkan SEMUA tautan di dalamnya, termasuk beberapa symlink mozilla atau hplip yang bahkan tidak Anda ketahui. Untuk menghindari ini dan untuk menyalin semua dan hanya symlink dari daftar direktori yang ditentukan tanpa rekursi , Anda menulis daftar setelah "menemukan" pada perintah di atas. Katakanlah Anda ingin menyimpan tautan dari rumah / pengguna dan Desktop; kamu bisa menulis

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

"-maxdepth 1" adalah untuk mencegah penemuan berulang dari rumah. Anda dapat menambahkan jalur ke tarfile jika diinginkan. Kalau tidak:

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

Jika Anda malas dan Anda sering ingin menggunakannya, Anda dapat menambahkannya sebagai alias ke .bashrc atau ke .bash_aliases di direktori home Anda (.bash_aliases adalah cara yang sangat mudah untuk mengumpulkan alias Anda dan, mengapa tidak, menyimpannya di Dropbox ...). Cukup buat file kosong baru bernama .bash_aliases di direktori home Anda (yaitu, / home / pengguna), buka dengan editor teks dan tulis baris berikut di dalamnya:

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

Ganti direktori setelah "menemukan" dengan yang Anda pilih dan "save_symlinks" dengan nama perintah pilihan Anda. Untuk memulihkan, buka File manager Anda (jika jalur ke direktori dalam perintah di atas tidak mutlak, tarfile harus di rumah / pengguna), klik kanan dan ekstrak.

Jika Anda melakukan ini, hidup lebih mudah. Yang harus Anda lakukan adalah:

SIMPAN: ketik save_symlinks di Terminal, simpan tarfile di rumah Anda ke Dropbox; KEMBALIKAN: salin file dari Dropbox ke direktori home Anda, klik kanan padanya dan pilih "ekstrak di sini".

Archie
sumber