Як символічні посилання працюють у Dropbox?


20

Я зробив декілька посилань на файли в папці. Коли я додав цю папку до Dropbox, посилання містили повторювані копії файлів, пов’язаних із цим. У вас була ця проблема? Ви розумієте, що відбувається? Чи є рішення?

Щоб зробити це питання зрозумілішим: у стовпці "тип" менеджера файлів перед тим, як підключитися до Dropbox, було показано, що Link_to_notes є посиланням і розмір - 32 байти. Після підключення до Dropbox, Link_to_notes було показано як звичайний текстовий документ, розмір - 18,7 кБ, розмір файлу приміток.


2
Оскільки Dropbox є кросплатформенним рішенням, будь-яке інше поведінка, можливо, буде ще більш заплутаним - як би він поводився, якщо синхронізувати свою папку з машиною Windows?
Сергій

З середини 2019 року Dropbox більше не слідкує за посиланнями
eri0o

Згідно з поточним написанням, посилання більше не працює, і це смокче.
липня

Відповіді:


15

DropBox дотримується символічних посилань і розглядає їх як каталоги. Це дійсно корисно для резервного копіювання без переміщення файлів і каталогів у вашу DropBox-каталог.

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

Це може бути небезпечна поведінка. Наприклад, якщо я видаляю посилання з каталогу Dropbox, чи можливий сценарій, який би я також міг випадково видалити свої оригінальні файли чи папки?
Vicon

@Vicon, це не небезпечна поведінка, це очікувана поведінка. Але так, щоб було зрозуміло, якщо ви видалите символічне посилання, файли також будуть видалені з Dropbox
Грегологія

2
У спільноті Dropbox неодноразово говорилося, що Dropbox не підтримує символічні посилання та настійно не радить їх використовувати. Якщо ви звернетесь до служби підтримки користувачів Dropbox, він попросить вас видалити будь-яке символічне посилання, перш ніж продовжувати. Звичайно, люди все ще можуть користуватися нею, але це не поведінка, призначена Dropbox, і може бути небезпечною (втрачає файли), проблематичною (невмисне синхронізовані копії файлів, що вирішує проблему в цьому питанні). як синхронізацію питань щодо ефективності тощо
Vicon

@Vicon, символічні посилання функціонують прозоро для багатьох операцій: програми, які читають або записують у файли, названі символічним посиланням, будуть вести себе так, ніби працюють безпосередньо над цільовим файлом
Грегологія

1
Цей метод добре працював для мене довгий час у файлових системах ext4. У мене немає ніякого почуття небезпеки, оскільки я ніколи не взаємодію з файлами Dropbox в Dropbox. Це вдається з'єднати мої системи Linux та планшети Android. Однак я помічаю, що це посилання говорить, що моя порада застаріла help.dropbox.com/installs-integrations/sync-uploads/symlinks
pauljohn32

7

Найкращий спосіб зробити це - зберігати файли у папці випадаючої скриньки та посилатися на них ззовні ...

Тому створіть ~ / Dropbox / Документи та символьне посилання:

ln -s ~/Dropbox/Documents ~/Documents

Це зупиняє, що папка виходить збентежена і від’єднує все, що є посиланням всередині, тому що у вас є всі речі всередині, а натомість, коли ви хочете їх в іншому місці, ви посилаєтесь на них у Dropbox. Основне правило - не мати ніяких символьних посилань ніде всередині папки Drobox, щоб мати їх поза папкою dropbox, і у вас не буде проблем.

У мене є dropbox на декількох машинах ubuntu і всі мої основні папки верхнього рівня фактично зберігаються в dropbox.


Чому Dropbox заплутався? І як би Dropbox змінив символічні посилання? Символічні посилання автоматично вирішуються файловою системою
Грегологія

6

dropbox буде переходити до посилань sym на каталоги, але перерве посилання (sym або hard) на файл і замінить його на файл.


2

TL; DR: Нижче наведено спосіб отримати поведінку, досить схожу на символічні посилання, лише на рівні графічного інтерфейсу користувача (GUI), що особливо корисно, якщо ви не хочете, щоб DropBox повторно копіював одні й ті ж файли в різні папки в DropBox ієрархія лише тому, що ви хочете переглядати їх з різних місць (тобто шляхів до папок).

Фон

Не раз мене спалювали копії папок DropBox, якщо я створюю символьні посилання (символьні посилання) в ієрархії папок DropBox, аж до заповнення мого облікового запису. Як багато хто зазначав в Інтернеті, немає реального виправлення відсутності DropBox віднестись до символічних посилань належним чином, що шкода, оскільки це було б важко для них.

Обхід

Одне вирішення, яке я використовую для досягнення еквівалентної поведінки символьних посилань всередині ієрархії DropBox --- те, що інші часто називають "внутрішніми посиланнями" --- без того, щоб DropBox дублював все, це створити еквівалент файлу ярликів Windows (тобто , файл .lnk в екосистемі MS). Я роблю це, створюючи .desktop файл, який відкриває менеджер файлів моєї системи на потрібний шлях. Таким чином, це рішення працює лише на рівні GUI і лише для систем, сумісних з XDG (наприклад, Ubuntu, системи на базі GNOME та багато інших).

Приклад

Наприклад, я читаю про вдосконалені методики Python для нової роботи, яку я беру, і PDF-файли, які я читаю, зберігаються у моїй папці DropBox для додатка GoodReader (iOS), щоб я міг їх читати як на своєму робочому столі і з моїми мобільними пристроями. Замість того, щоб переробляти до цієї папки ( /home/morse/lib/active/GoodReader/Books/Python), я просто створюю Python.desktopпапку під /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

(Примітка: Переконайтеся , що адаптувати Exec=nautilus ...частину , якщо ви використовуєте файловий менеджер, крім Nautilus, і, звичайно , ви хочете , щоб адаптувати Name=, Icon=і шлях частина Exec=лінії для кожного «линка» , який ви хочете створити.)

З цим я бачу на своєму робочому столі папку з іменем Python, яка діє так само, як символічне посилання --- тобто я двічі клацнув її, і вона відкриває відповідну папку ---, але лише невеликий текстовий файл (наприклад, Python. desktop) отримує синхронізацію з DropBox та іншими моїми системами (на відміну від того, що весь вміст з часом дублюється DropBox).

Як і для інших файлів .desktop, дозволи повинні бути встановлені таким чином, щоб файл був читабельним та виконавчим (наприклад, chmod 700 Python.desktopабо chmod 755 Python.desktop) для відображення зазначеної піктограми та для подвійного клацання по ній, щоб насправді зробити що-небудь.

Підсумок

Підсумовуючи це, тоді у мене завжди будуть наявні фактичні файли десь у DropBox --- у цьому прикладі, /home/morse/lib/active/GoodReader/Books/Python- але я також матиму "ярлик" на робочому столі до всіх моїх систем на базі Linux, для яких я також налаштовано DropBox.

Звичайно, це рішення не працює на рівні командного рядка, як справжнє символьне посилання.

Однак, це, здається, є новим способом вирішення на рівні графічного інтерфейсу, такого, якого я ще не бачив у іншому місці. Отож, сподіваюся, такий підхід може бути корисним для інших.


Це геній! Я досі не бачив рішення для внутрішніх символьних посилань! І це супер акуратно. Дякую, що ви провели мій день! Я повинен додати, що слід зробити досить просто сценарій командного рядка, який аналізує файл .desktop та відкриває файл або папку, що є посиланням, хоча, можливо, ви не зможете "cd" потрапити в каталог безпосередньо.
Правен

0

Стисніть свої посилання та збережіть стислий файл у Dropbox

Попередні відповіді вичерпні та чіткі. Я просто пропоную три обхідні шляхи, засновані на єдиному принципі. Третє виглядає складніше, але це дуже ефективно. Ідея така: стиснути свої посилання на файл tar, який Dropbox не вважатиме посиланням, і збережіть його на Dropbox. Третій спосіб майже такий же прямий, як і копіювання ваших посилань безпосередньо на ваш Dropbox - насправді набагато швидше, ніж копіювання декількох посилань по одному.

У мене є двадцять символічних посилань, які я зазвичай використовую в моїй установці Lubuntu, наприклад, для швидкого доступу до скриптів bash, збережених у Dropbox, до зовнішніх hdds, до документів, які часто використовуються тощо зручно мати копію Dropbox, яку можна використовувати для інших установок або коли я відновлюю оновлення (тобто коли я перевстановлююсь після спроби відключити оновлення;).

1-й спосіб

Ви створюєте каталог під назвою MyLinks (скажімо, в Документах) і копіюєте до нього всі ваші домашні посилання; якщо у вас є посилання в інших каталогах, створіть підкаталоги в MyLinks та скопіюйте їх. Наприклад, якщо посилання, які ви хочете зберегти, знаходяться в домашніх умовах та на робочому столі, скопіюйте домашні посилання на MyLinks, зробіть у ньому dir під назвою Desktop та скопіюйте на нього посилання Desktop. Потім відкрийте термінал, cd Documents (за умови, що це каталог, де знаходиться MyLinks) та зробіть файл tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Не забудьте додати розширення ".tar" до імені tarfile, або Ubuntu Archive Manager відмовиться його відкривати.) Якщо ви це зробите, будьте обережні, щоб не додати опцію -h (--dereference) до tar, оскільки це точно поводився б як Dropbox і стискав цільові файли замість символьних посилань. (До речі, така поведінка була б вітальною у більшості випадків, особливо якщо це спрямовано на переносимість, але це не так, якщо потрібно зберегти символьні посилання як символьні посилання.)

Файл tar також міститиме посилання, які тимчасово порушуються, наприклад, посилання на зовнішні hdds, які наразі не встановлені - це нормально.

Збережіть файл смоли у вашому Dropbox. Коли вам потрібні посилання назад, скопіюйте файл смоли в каталог вашої файлової системи (не в Dropbox), витягніть його (просто клацніть правою кнопкою миші та виберіть "Витягнути тут") та скопіюйте свої символічні посилання назад у ті місця, де ви їх хочете. .

2-й спосіб

Якщо символьні посилання, які ви хочете зберегти, мають однозначний префікс (наприклад, "MySl" ...), ви можете дуже швидко зробити свій tarfile таким чином (додано зайві пробіли для запобігання помилок):

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

Одинарна крапка після "знайти" означає поточний каталог: відкрийте термінал у своєму домашньому режимі (як за замовчуванням). Ви, безумовно, можете додати шлях до файлу tar, і можете випустити команду з іншого каталогу, який не є домашнім: замініть "." з доріжкою до вашого будинку / користувача. Не потрібно робити робочі каталоги як MyLinks вище. Відновлення символьних посилань також швидко: ви копіюєте tarfile у свій дім, клацніть правою кнопкою миші та "витягніть тут". Однак перш ніж починати префіксувати всі назви ваших символьних посилань, погляньте на наступний варіант.

3-й спосіб (і найкраще)

Дуже швидкий спосіб збирати всі ваші символьні посилання у файлі tar: відкрийте термінал у вашому домі / користувачі (що за замовчуванням відкривається у терміналі) та:

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

Недолік полягає в тому, що ви отримуєте ВСІ ваші посилання в ньому, включаючи деякі символи посилань на мозілу або hplip, про які ви навіть не знали. Щоб цього уникнути та скопіювати всі та лише символьні посилання з визначеного списку каталогів без рекурсії , ви пишете список після команди «знайти» у команді, що знаходиться вище. Скажіть, що ви хочете зберегти посилання з дому / користувача та на робочому столі; можна писати

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

"-maxdepth 1" - це запобігання повторенню пошуку вдома. Ви можете додати шлях до tarfile, якщо бажаєте. Як варіант:

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

Якщо ви лінь і хочете цим користуватися часто, ви можете додавати його як псевдонім до .bashrc або до .bash_aliases у своєму домашньому режимі (.bash_aliases - це дуже зручний спосіб збирання ваших псевдонімів, а чому б і ні, зберегти їх у Dropbox ...). Просто створіть у своєму домашньому режимі новий порожній файл під назвою .bash_aliases (тобто / home / user), відкрийте його текстовим редактором і напишіть у ньому такий рядок:

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

Замініть каталоги після "find" на вибрані вами та "save_symlinks" на назва вашої команди. Для відновлення відкрийте диспетчер файлів (якщо шлях до каталогів у вищевказаній команді не є абсолютним, tarfile повинен бути вдома / користувача), клацніть правою кнопкою миші та витягніть її.

Якщо ви це зробите, життя простіше. Все, що вам потрібно зробити, це:

ЗБЕРЕЖИТИ: введіть save_symlinks в Термінал, збережіть tarfile у вашому домі до Dropbox; ВІДКРИТИ: скопіюйте файл з Dropbox до свого домашнього редактора, клацніть правою кнопкою миші та виберіть "Витягнути тут".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.