Làm thế nào để các liên kết tượng trưng hoạt động trong Dropbox?


20

Tôi đã thực hiện một số liên kết đến các tập tin trong một thư mục. Khi tôi thêm thư mục đó vào Dropbox, các liên kết chứa các bản sao trùng lặp của các tệp được liên kết đến. Bạn đã có vấn đề này? Bạn có hiểu những gì đang xảy ra? Có một giải pháp?

Để làm cho câu hỏi này rõ ràng hơn: Trong cột "loại" của trình quản lý tệp, trước khi kết nối với Dropbox, Link_to_notes được hiển thị là một liên kết và kích thước là 32 byte. Sau khi kết nối với Dropbox, Link_to_notes đã được hiển thị là một tài liệu văn bản thuần túy và kích thước là 18,7 kB, kích thước của tệp ghi chú.


2
Với Dropbox là một giải pháp đa nền tảng, mọi hành vi khác có thể sẽ còn khó hiểu hơn - nó sẽ hoạt động thế nào nếu bạn đồng bộ hóa thư mục của mình với máy Windows?
Serge

Kể từ giữa năm 2019, Dropbox không còn theo liên kết tượng trưng
eri0o

Theo văn bản hiện tại, symlink không còn hoạt động, và nó rất tệ.
Jus12

Câu trả lời:


15

DropBox theo các liên kết tượng trưng và coi chúng là các thư mục. Nó thực sự hữu ích để sao lưu mà không phải di chuyển tệp và thư mục vào thư mục DropBox của bạn.

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

Đây có thể là một hành vi nguy hiểm. Ví dụ: nếu tôi xóa liên kết khỏi thư mục Dropbox, có thể có bất kỳ kịch bản nào tôi có thể vô tình xóa các tệp hoặc thư mục gốc của mình không?
Vicon

@Vicon, đó không phải là hành vi nguy hiểm, đó là hành vi được mong đợi. Nhưng vâng, rõ ràng, nếu bạn xóa liên kết tượng trưng, ​​các tệp cũng sẽ bị xóa khỏi Dropbox
Gregology

2
Trong cộng đồng Dropbox, người ta đã tuyên bố rằng Dropbox không hỗ trợ các liên kết tượng trưng và lời khuyên mạnh mẽ về việc sử dụng nó. Nếu bạn liên hệ với bộ phận hỗ trợ khách hàng của Dropbox, họ sẽ yêu cầu bạn xóa bất kỳ liên kết tượng trưng nào trước khi tiếp tục. Chắc chắn, mọi người vẫn có thể sử dụng nó, nhưng đây không phải là hành vi do Dropbox nhắm đến và cũng có thể nguy hiểm (mất tệp), có vấn đề (có các tệp trùng lặp vô tình được đồng bộ hóa, đây cũng là vấn đề được yêu cầu giải quyết trong câu hỏi này) như đồng bộ hóa các vấn đề về hiệu suất, v.v.
Vicon

@Vicon, liên kết tượng trưng hoạt động minh bạch đối với nhiều hoạt động: chương trình đọc hoặc ghi vào tập tin có tên bởi một liên kết tượng trưng sẽ cư xử như thể hoạt động trực tiếp trên các tập tin mục tiêu
Gregology

1
Phương pháp này đã hoạt động tốt đối với tôi trong một thời gian dài trong các hệ thống tệp ext4. Tôi không có cảm giác nguy hiểm vì tôi không bao giờ tương tác với các tệp Dropbox trong Dropbox. Nó thành công để liên kết các hệ thống Linux và máy tính bảng Android của tôi. Tuy nhiên, tôi nhận thấy liên kết này nói rằng lời khuyên của tôi đã hết hạn help.dropbox.com/installs-integations/sync-uploads/symlinks
pauljohn32

7

Cách tốt nhất để làm điều đó là lưu trữ các tệp trong thư mục dropbox và liên kết tượng trưng với chúng từ bên ngoài ...

Vì vậy, hãy tạo ~ / Dropbox / Documents và symlink:

ln -s ~/Dropbox/Documents ~/Documents

Điều này ngăn chặn dropbox bị lẫn lộn và hủy liên kết bất cứ thứ gì có liên kết bên trong bởi vì bạn có tất cả những thứ bên trong và thay vào đó khi bạn muốn chúng ở nơi khác, bạn liên kết với chúng trong dropbox. Quy tắc cơ bản là không có bất kỳ liên kết tượng trưng nào ở bất kỳ đâu trong thư mục dropbox ... hãy để chúng bên ngoài thư mục dropbox và bạn sẽ không gặp vấn đề gì.

Tôi có dropbox trên một số máy Ubuntu và có tất cả các thư mục cấp cao nhất của tôi thực sự được lưu trữ trong dropbox.


Tại sao Dropbox bị nhầm lẫn? Và Dropbox sẽ thay đổi các liên kết tượng trưng như thế nào? Các liên kết tượng trưng được hệ thống tập tin tự động giải quyết
Gregology

6

dropbox sẽ theo các liên kết sym đến các thư mục, nhưng nó sẽ phá vỡ một liên kết (dù là sym hay hard) thành một tập tin và thay thế nó bằng một tập tin.


2

TL; DR: Dưới đây là cách để có hành vi khá giống với các liên kết tượng trưng, ​​chỉ ở cấp độ giao diện người dùng đồ họa (GUI), đặc biệt hữu ích nếu bạn không muốn DropBox liên tục sao chép cùng một tệp vào các thư mục khác nhau trong DropBox hệ thống phân cấp chỉ vì bạn muốn xem chúng từ những nơi khác nhau (ví dụ: đường dẫn thư mục).

Lý lịch

Đã hơn một lần tôi bị đốt cháy bởi các thư mục sao chép DropBox nếu tôi tạo một liên kết tượng trưng (symlink) trong hệ thống phân cấp thư mục DropBox, thậm chí đến mức lấp đầy tài khoản của tôi. Như nhiều người đã lưu ý trên web, không có cách khắc phục thực sự nào cho việc DropBox không xử lý các liên kết tượng trưng đúng cách, điều này thật đáng tiếc vì họ sẽ không khó để làm như vậy.

Cách giải quyết

Tuy nhiên, một cách giải quyết tôi sử dụng để đạt được hành vi tương đương của các liên kết tượng trưng trong hệ thống phân cấp DropBox --- điều mà những người khác thường gọi là "liên kết nội bộ" --- mà không cần DropBox sao chép mọi thứ là tạo ra một tệp phím tắt Windows (nghĩa là , một tệp .lnk trong hệ sinh thái MS). Tôi làm như vậy bằng cách tạo tệp .desktop mở trình quản lý tệp của hệ thống của tôi đến đường dẫn mong muốn. Do đó, cách giải quyết này chỉ hoạt động ở cấp GUI và chỉ dành cho các hệ thống tuân thủ XDG (ví dụ: Ubuntu, các hệ thống dựa trên Gnome, nhiều hệ thống khác).

Thí dụ

Ví dụ: tôi đang đọc các kỹ thuật Python nâng cao cho một công việc mới mà tôi đang thực hiện và các tệp PDF tôi đang đọc được lưu trữ trên thư mục DropBox của tôi cho Ứng dụng GoodReader (iOS) để tôi có thể đọc cả hai trên máy tính để bàn của mình và với các thiết bị di động của tôi. Thay vì phải đi sâu vào thư mục đó ( /home/morse/lib/active/GoodReader/Books/Python), tôi chỉ cần tạo một Python.desktopthư mục bên dưới /home/morse/Desktopvới các nội dung sau:

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

(Lưu ý: Hãy chắc chắn để thích ứng với Exec=nautilus ...phần nếu bạn đang sử dụng một trình quản lý file khác hơn là Nautilus, và tất nhiên bạn sẽ muốn để thích ứng với Name=, Icon=và phần đường dẫn của Exec=dòng cho mỗi "liên kết tượng trưng" mà bạn muốn tạo.)

Với điều này, tôi thấy một thư mục có tên Python trên máy tính để bàn của mình hoạt động giống như một liên kết tượng trưng --- nghĩa là tôi nhấp đúp vào nó và nó mở thư mục thích hợp --- nhưng chỉ là một tệp văn bản nhỏ (ví dụ: Python. máy tính để bàn) được đồng bộ hóa với DropBox và các hệ thống khác của tôi (trái ngược với tất cả nội dung cuối cùng được DropBox sao chép ở mọi nơi).

Cũng như các tệp .desktop khác, các quyền phải được đặt sao cho tệp có thể đọc được và có thể thực thi (ví dụ: chmod 700 Python.desktophoặc chmod 755 Python.desktop) để biểu tượng được chỉ định hiển thị và nhấp đúp vào tệp để thực sự làm bất cứ điều gì.

Tóm lược

Tóm lại, sau đó, tôi sẽ luôn có sẵn các tệp thực tế ở đâu đó trong DropBox --- trong ví dụ này, /home/morse/lib/active/GoodReader/Books/Python--- nhưng tôi cũng sẽ có một "phím tắt" trên máy tính để bàn trên tất cả các hệ thống dựa trên linux của tôi mà tôi cũng có cấu hình DropBox.

Tất nhiên, cách giải quyết này không hoạt động ở cấp dòng lệnh, như một liên kết tượng trưng thực sự.

Điều đó nói rằng, điều này dường như là một cách giải quyết mới ở cấp độ GUI, một điều tôi chưa từng thấy được đăng ở nơi khác. Vì vậy, tôi hy vọng phương pháp này có thể được sử dụng cho người khác.


Đây là thiên tài! Tôi chưa thấy một giải pháp cho các liên kết tượng trưng nội bộ cho đến bây giờ! Và đây là siêu gọn gàng. Cảm ơn bạn đã làm cho ngày của tôi! Tôi nên thêm rằng nó khá đơn giản để tạo một tập lệnh dòng lệnh, phân tích cú pháp tệp .desktop và mở tệp hoặc thư mục được liên kết với nhau, mặc dù bạn không thể trực tiếp "cd" vào thư mục.
Praveen

0

Nén các liên kết của bạn và lưu tệp nén vào Dropbox

Các câu trả lời trước đây là đầy đủ và rõ ràng. Tôi chỉ đề xuất ba cách giải quyết, dựa trên một nguyên tắc duy nhất. Thứ ba có vẻ khó khăn hơn nhưng nó rất hiệu quả. Ý tưởng là: nén các liên kết tượng trưng của bạn vào một tệp tar, mà Dropbox sẽ không coi là một liên kết và lưu nó vào Dropbox. Cách thứ ba gần như trực tiếp như sao chép các liên kết của bạn trực tiếp vào Dropbox của bạn - thực sự nhanh hơn nhiều so với sao chép từng liên kết một.

Tôi có một số hai mươi liên kết tượng trưng mà tôi thường sử dụng trong cài đặt LubFi của mình, ví dụ: để truy cập nhanh vào các tập lệnh bash được lưu trong Dropbox, cho các hdds bên ngoài, đến các tài liệu thường được sử dụng, v.v. Chúng đều có trong thư mục nhà của tôi và trong Desktop và tôi tìm thấy nó thuận tiện để có một bản sao Dropbox của chúng để sử dụng cho các cài đặt khác hoặc khi tôi nâng cấp (nghĩa là khi tôi cài đặt lại sau khi cố gắng nâng cấp;).

Cách 1

Bạn tạo một thư mục có tên MyLinks (giả sử, trong Tài liệu) và sao chép tất cả các liên kết nhà của bạn vào đó; nếu bạn có các liên kết tượng trưng trong các thư mục khác, hãy tạo các thư mục con trong MyLinks và sao chép các liên kết tượng trưng của bạn đến chúng. Ví dụ: nếu các liên kết bạn muốn lưu ở nhà và trong Máy tính để bàn, hãy sao chép các liên kết nhà vào MyLinks, tạo một thư mục có tên Desktop trong đó và sao chép các liên kết Desktop vào nó. Sau đó mở Terminal, cd Documents (với điều kiện đây là thư mục chứa MyLinks) và tạo một tệp tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(Hãy nhớ thêm tiện ích mở rộng ".tar" vào tên tarfile hoặc Trình quản lý lưu trữ Ubuntu sẽ từ chối mở.) Nếu bạn làm điều này, chỉ cần cẩn thận không thêm tùy chọn -h (--dereference) vào tar vì nó sẽ hoạt động chính xác như Dropbox và nén các tệp đích thay vì các liên kết tượng trưng. (Nhân tiện, một hành vi như vậy sẽ được hoan nghênh trong hầu hết các trường hợp, đặc biệt nếu một người nhắm đến tính di động, nhưng không phải là nếu người ta muốn lưu các liên kết tượng trưng dưới dạng liên kết tượng trưng.)

Tệp tar cũng sẽ bao gồm các liên kết tạm thời bị hỏng, chẳng hạn như các liên kết đến các hdds bên ngoài hiện không được gắn - điều này là tốt.

Lưu tệp tar trong Dropbox của bạn. Khi bạn cần các liên kết trở lại, sao chép tệp tar vào một thư mục trong hệ thống tệp của bạn (không nằm trong Dropbox), giải nén nó (chỉ cần nhấp chuột phải và chọn "Trích xuất tại đây") và sao chép các liên kết tượng trưng của bạn trở lại vị trí bạn muốn chúng .

Cách 2

Nếu các liên kết bạn muốn lưu có tiền tố không xác định (chẳng hạn như "MySl" ...), bạn có thể nhanh chóng tạo ra tarfile của mình theo cách này (thêm khoảng trắng không cần thiết để tránh nhầm lẫn):

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

Dấu chấm đơn sau "find" có nghĩa là thư mục hiện tại: mở Terminal trong thư mục nhà của bạn (theo mặc định). Bạn chắc chắn có thể thêm một đường dẫn đến tệp tar và bạn có thể ra lệnh từ một thư mục khác không phải là nhà: thay thế "." với đường dẫn đến nhà / người dùng của bạn. Không cần phải tạo thư mục làm việc như MyLinks ở trên. Khôi phục các liên kết tượng trưng cũng nhanh chóng: bạn sao chép tarfile vào nhà của bạn, nhấp chuột phải vào nó và "giải nén ở đây". Tuy nhiên, trước khi bắt đầu tiền tố tất cả các tên của liên kết tượng trưng của bạn, hãy xem tùy chọn tiếp theo.

Cách thứ 3 (và tốt nhất)

Một cách rất nhanh để thu thập tất cả các liên kết tượng trưng của bạn trong tệp tar là: mở Terminal trong nhà / người dùng của bạn (mặc định khi bạn mở Terminal) và:

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

Hạn chế là, bạn có TẤT CẢ các liên kết của mình trong đó, bao gồm một số liên kết mozilla hoặc hplip mà bạn thậm chí không biết là mình có. Để tránh điều này và sao chép tất cả và chỉ các liên kết tượng trưng từ danh sách thư mục đã chỉ định mà không cần đệ quy , bạn viết danh sách sau khi "tìm" trong lệnh trên. Giả sử bạn muốn lưu các liên kết từ nhà / người dùng và Máy tính để bàn; bạn có thể viết

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

"-maxdepth 1" là để ngăn không cho tìm thấy đệ quy qua nhà. Bạn có thể thêm một đường dẫn đến tarfile nếu bạn muốn. Cách khác:

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

Nếu bạn lười biếng và muốn sử dụng nó thường xuyên, bạn có thể thêm nó dưới dạng bí danh vào .bashrc hoặc .bash_aliases trong thư mục nhà của bạn (.bash_aliases là một cách rất thuận tiện để thu thập bí danh của bạn và tại sao không, lưu chúng vào Dropbox ...). Chỉ cần tạo một tệp trống mới có tên .bash_aliases trong thư mục nhà của bạn (nghĩa là / home / user), mở nó bằng trình soạn thảo văn bản và viết dòng sau vào đó:

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

Thay thế các thư mục sau khi "tìm" bằng thư mục bạn chọn và "save_symlinks" bằng tên lệnh bạn chọn. Để khôi phục, hãy mở Trình quản lý tệp của bạn (nếu đường dẫn đến các thư mục trong lệnh trên không tuyệt đối, tarfile phải ở nhà / người dùng), nhấp chuột phải và giải nén.

Nếu bạn làm điều này, cuộc sống dễ dàng hơn. Tât cả nhưng điêu bạn phải lam la:

TIẾT KIỆM: nhập save_symlinks trong Terminal, lưu tarfile trong nhà của bạn vào Dropbox; RESTORE: sao chép tệp từ Dropbox vào thư mục nhà của bạn, nhấp chuột phải vào tệp và chọn "giải nén tại đây".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.