ลิงก์สัญลักษณ์ทำงานอย่างไรใน Dropbox


20

ฉันสร้างลิงก์ไปยังไฟล์ในโฟลเดอร์ เมื่อฉันเพิ่มโฟลเดอร์นั้นลงใน Dropbox ลิงก์จะมีสำเนาของไฟล์ที่เชื่อมโยงอยู่ คุณเคยมีปัญหานี้หรือไม่? คุณเข้าใจหรือไม่ว่าเกิดอะไรขึ้น มีวิธีแก้ไขไหม?

หากต้องการทำให้คำถามนี้ชัดเจนขึ้น: ในคอลัมน์ "ประเภท" ของตัวจัดการไฟล์ก่อนที่จะเชื่อมต่อกับ Dropbox นั้น Link_to_notes จะแสดงเป็นลิงค์และขนาดคือ 32 ไบต์ หลังจากเชื่อมต่อกับ Dropbox แล้ว Link_to_notes แสดงเป็นเอกสารข้อความธรรมดาและมีขนาดเท่ากับ 18.7 kB ซึ่งเป็นขนาดของไฟล์บันทึกย่อ


2
ด้วย Dropbox ที่เป็นโซลูชันข้ามแพลตฟอร์มพฤติกรรมอื่น ๆ ทุกอย่างอาจทำให้สับสนมากขึ้น - มันจะทำงานอย่างไรถ้าคุณซิงค์โฟลเดอร์ของคุณกับเครื่อง Windows
Sergey

ตั้งแต่กลางปี ​​2019 Dropbox จะไม่ติดตาม
symlink

จากการเขียนปัจจุบัน symlink ไม่ทำงานอีกต่อไปแล้วมันแย่มาก
Jus12

คำตอบ:


15

DropBox ทำตามลิงก์สัญลักษณ์และถือว่าเป็นไดเรกทอรี มันมีประโยชน์มากสำหรับการสำรองข้อมูลโดยไม่ต้องย้ายไฟล์และไดเรกทอรีไปยังไดเรกทอรี DropBox ของคุณ

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

นี่อาจเป็นพฤติกรรมที่อันตราย ตัวอย่างเช่นหากฉันลบลิงก์จากไดเรกทอรี Dropbox อาจมีสถานการณ์ใดบ้างที่ฉันอาจลบไฟล์หรือโฟลเดอร์ดั้งเดิมของฉันโดยไม่ได้ตั้งใจหรือไม่
Vicon

@Vicon นั่นไม่ใช่พฤติกรรมที่อันตรายนั่นคือพฤติกรรมที่คาดหวัง แต่ใช่จะชัดเจนถ้าคุณลบการเชื่อมโยงสัญลักษณ์ไฟล์จะถูกลบออกจาก Dropbox เกินไป
Gregology

2
ในชุมชน Dropbox มีการระบุซ้ำแล้วซ้ำอีกว่า Dropbox ไม่สนับสนุนลิงก์สัญลักษณ์และแนะนำอย่างยิ่งต่อการใช้งาน หากคุณติดต่อฝ่ายสนับสนุนลูกค้า Dropbox พวกเขาจะขอให้คุณลบลิงก์สัญลักษณ์ใด ๆ ก่อนดำเนินการต่อ แน่นอนว่าผู้ใช้ยังคงสามารถใช้งานได้ แต่นี่ไม่ใช่พฤติกรรมที่ Dropbox ทำไว้และอาจเป็นอันตราย (สูญเสียไฟล์) มีปัญหา (มีไฟล์ที่ซ้ำกันโดยไม่ได้ตั้งใจซิงค์ซึ่งเป็นปัญหาที่ขอให้แก้ไขในคำถามนี้) เช่นกัน เนื่องจากปัญหาด้านประสิทธิภาพการซิงค์เป็นต้น
Vicon

@Vicon ลิงก์สัญลักษณ์ทำงานอย่างโปร่งใสสำหรับการดำเนินการหลายอย่าง: โปรแกรมที่อ่านหรือเขียนไปยังไฟล์ที่มีชื่อโดยลิงก์สัญลักษณ์จะทำงานเหมือนกับว่าทำงานกับไฟล์เป้าหมายโดยตรง
Gregology

1
วิธีนี้ใช้ได้ดีสำหรับฉันเป็นเวลานานในระบบไฟล์ ext4 ฉันไม่มีความรู้สึกอันตรายเพราะฉันไม่เคยมีปฏิสัมพันธ์กับไฟล์ Dropbox ภายใน Dropbox มันประสบความสำเร็จในการเชื่อมโยงระบบ Linux และแท็บเล็ต Android เข้าด้วยกัน อย่างไรก็ตามฉันสังเกตว่าลิงก์นี้บอกว่าคำแนะนำของฉันล้าสมัยhelp.dropbox.com/installs-integrations/sync-uploads/symlinks
pauljohn32

7

วิธีที่ดีที่สุดที่จะทำคือการจัดเก็บไฟล์ในโฟลเดอร์ดรอปบ็อกซ์และ symlink ไปยังพวกเขาจากภายนอก ...

ดังนั้นสร้าง ~ / Dropbox / Documents และ symlink:

ln -s ~/Dropbox/Documents ~/Documents

สิ่งนี้จะหยุดการดรอปบ็อกซ์ทำให้สับสนและยกเลิกการเชื่อมโยงสิ่งใดก็ตามที่เป็นลิงก์ภายในเพราะคุณมีทุกสิ่งอยู่ข้างในและเมื่อคุณต้องการให้พวกเขาอยู่ที่อื่น กฎพื้นฐานไม่มี symlink ใด ๆ ในโฟลเดอร์ดรอปบ็อกซ์ ... มีไว้นอกโฟลเดอร์ดรอปบ็อกซ์และคุณจะไม่มีปัญหา

ฉันมีดรอปบ็อกซ์ในเครื่องอูบุนตูหลายเครื่องและมีโฟลเดอร์ระดับบนสุดที่สำคัญทั้งหมดเก็บไว้ในดรอปบ็อกซ์


ทำไม Dropbox ถึงสับสน? และ Dropbox จะเปลี่ยนลิงก์สัญลักษณ์อย่างไร ลิงก์สัญลักษณ์จะได้รับการแก้ไขโดยอัตโนมัติในระบบไฟล์
Gregology

6

ดรอปบ็อกซ์จะตามลิงก์ sym ไปยังไดเรกทอรี แต่จะทำให้ลิงก์แตก (อย่างใดอย่างหนึ่งหรือยาก) ไปยังไฟล์และแทนที่ด้วยไฟล์


2

TL; DR: ด้านล่างเป็นวิธีรับพฤติกรรมที่ค่อนข้างคล้ายกับลิงก์สัญลักษณ์ในระดับส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) เท่านั้นซึ่งมีประโยชน์อย่างยิ่งหากคุณไม่ต้องการให้ DropBox ซ้ำ ๆ คัดลอกไฟล์เดียวกันไปยังโฟลเดอร์ต่าง ๆ ภายใน DropBox ลำดับชั้นเพียงเพราะคุณต้องการดูพวกเขาจากสถานที่ที่แตกต่างกัน (เช่นเส้นทางโฟลเดอร์)

พื้นหลัง

มากกว่าหนึ่งครั้งฉันถูกเขียนโดย DropBox โฟลเดอร์ที่ซ้ำกันถ้าฉันสร้างลิงก์สัญลักษณ์ (symlink) ภายในลำดับชั้นของโฟลเดอร์ DropBox แม้กระทั่งจนถึงจุดเติมบัญชีของฉัน ดังที่หลายคนตั้งข้อสังเกตไว้บนเว็บไม่มีการแก้ไขจริง ๆ สำหรับ DropBox ที่ไม่มีการจัดการลิงก์สัญลักษณ์อย่างถูกต้องซึ่งเป็นเรื่องที่น่าเสียดายเพราะมันไม่ยากสำหรับพวกเขาที่จะทำเช่นนั้น

วิธีแก้ปัญหา

วิธีการหนึ่งที่ฉันใช้เพื่อให้เกิดพฤติกรรมที่เทียบเท่าของ symlink ในลำดับชั้นของ DropBox --- สิ่งที่คนอื่นมักเรียกว่า "internal symlinks" --- โดยไม่มี 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=สายสำหรับแต่ละ "symlink" คุณต้องการสร้าง.)

ด้วยสิ่งนี้ฉันเห็นโฟลเดอร์ชื่อ Python บนเดสก์ท็อปของฉันซึ่งทำหน้าที่เหมือนกับลิงก์สัญลักษณ์ - นั่นคือฉันคลิกสองครั้งและจะเปิดโฟลเดอร์ที่เหมาะสม --- แต่เป็นไฟล์ข้อความขนาดเล็กเท่านั้น (เช่น Python เดสก์ท็อป) รับ sync'd ไปที่ DropBox และระบบอื่น ๆ ของฉัน

เช่นเดียวกับไฟล์ .desktop อื่น ๆ จะต้องตั้งค่าการอนุญาตเพื่อให้ไฟล์นั้นสามารถอ่านได้และสามารถเรียกใช้งานได้ (เช่นchmod 700 Python.desktopหรือchmod 755 Python.desktop) สำหรับไอคอนที่ระบุเพื่อแสดงและสำหรับดับเบิลคลิกเพื่อทำสิ่งใด ๆ

สรุป

โดยสรุปแล้วฉันจะมีไฟล์จริงอยู่ที่ไหนสักแห่งใน DropBox --- ในตัวอย่างนี้/home/morse/lib/active/GoodReader/Books/Python--- แต่ฉันจะมี "ทางลัด" บนเดสก์ท็อปในทุกระบบที่ใช้ Linux ของฉันด้วย ยังมีการกำหนดค่า DropBox

แน่นอนการแก้ปัญหานี้ไม่ทำงานในระดับบรรทัดคำสั่งเหมือน symlink จริง

ที่กล่าวมาสิ่งนี้ดูเหมือนจะเป็นวิธีแก้ปัญหาแบบใหม่ในระดับ GUI ซึ่งเป็นสิ่งที่ฉันไม่เคยเห็นมาก่อน ดังนั้นฉันหวังว่าวิธีการนี้สามารถนำไปใช้กับผู้อื่นได้


นี่คืออัจฉริยะ! ฉันยังไม่เห็นวิธีแก้ปัญหาสำหรับ symlink ภายในจนกระทั่งตอนนี้! และนี่ก็เรียบร้อยดีมาก ขอบคุณที่ทำให้วันของฉัน! ฉันควรเพิ่มว่ามันควรตรงไปตรงมาเพื่อสร้างสคริปต์บรรทัดคำสั่งซึ่งแยกวิเคราะห์ไฟล์ .desktop และเปิดไฟล์หรือโฟลเดอร์ที่เชื่อมโยงกันแม้ว่าคุณอาจไม่สามารถ "cd" ลงในไดเรกทอรีโดยตรง
Praveen

0

บีบอัดลิงก์ของคุณและบันทึกไฟล์บีบอัดไปยัง Dropbox

คำตอบก่อนหน้านี้ละเอียดและชัดเจน ฉันขอแนะนำวิธีแก้ปัญหาสามประการโดยใช้หลักการเดียว อันที่สามดูยากกว่า แต่มีประสิทธิภาพมาก แนวคิดคือ: บีบอัด symlink ของคุณไปยังไฟล์ tar ซึ่ง Dropbox จะไม่ถือว่าเป็นลิงก์และบันทึกลงใน Dropbox วิธีที่สามนั้นใกล้เคียงกับการคัดลอกลิงก์ของคุณโดยตรงไปยัง Dropbox ของคุณ - เร็วกว่าการคัดลอกลิงค์หลายลิงค์ต่อหนึ่ง

ฉันมีลิงก์สัญลักษณ์ยี่สิบอันที่ปกติฉันใช้ในการติดตั้ง Lubuntu ของฉันเช่นสำหรับการเข้าถึงสคริปต์ทุบตีที่บันทึกไว้อย่างรวดเร็วใน Dropbox ไปยัง hdds ภายนอกไปยังเอกสารที่ใช้บ่อยและอื่น ๆ ทั้งหมดอยู่ในบ้านของฉันและบนเดสก์ท็อป สะดวกในการใช้สำเนา Dropbox ของพวกเขาเพื่อใช้สำหรับการติดตั้งอื่น ๆ หรือเมื่อฉัน dist-upgrade (นั่นคือเมื่อฉันติดตั้งใหม่หลังจากพยายาม dist-upgrade;)

วิธีที่ 1

คุณสร้างไดเรกทอรีที่ชื่อว่า MyLinks (พูดในเอกสาร) และคัดลอก symlink ที่บ้านของคุณทั้งหมดไปที่มัน; หากคุณมี symlink ในไดเรกทอรีอื่น ๆ ให้สร้าง subdirs ใน MyLinks และคัดลอก symlink ของคุณไปยังพวกมัน ตัวอย่างเช่นหากลิงก์ที่คุณต้องการบันทึกอยู่ในบ้านและในเดสก์ท็อปให้คัดลอกลิงค์โฮมไปยัง MyLinks สร้าง dir ที่ชื่อว่าเดสก์ท็อปในนั้นและคัดลอกลิงก์เดสก์ทอปไปที่ลิงค์นั้น จากนั้นเปิด Terminal, cd Documents (โดยมีเงื่อนไขว่านี่คือไดเรกทอรีที่ MyLinks อยู่) และสร้างไฟล์ tar:

tar -cvf MyHomeLinks.tar MyHomeLinks

(อย่าลืมเพิ่มส่วนขยาย ".tar" ในชื่อ tarfile มิฉะนั้น Ubuntu Archive Manager จะปฏิเสธที่จะเปิดมัน) หากคุณทำเช่นนี้โปรดระวังอย่าเพิ่มตัวเลือก -h (--dereference) เพื่อ tar เพราะมัน จะทำงานอย่างแม่นยำเป็น Dropbox และบีบอัด ไฟล์เป้าหมายแทนที่จะเป็น symlink (โดยวิธีการพฤติกรรมดังกล่าวจะได้รับการต้อนรับในกรณีส่วนใหญ่โดยเฉพาะอย่างยิ่งถ้ามีจุดมุ่งหมายที่พกพา แต่ไม่ใช่ถ้าต้องการบันทึก symlink เป็น symlinks)

ไฟล์ tar จะมีลิงก์ที่ใช้งานไม่ได้ชั่วคราวเช่นลิงก์ไปยัง hdds ภายนอกที่ไม่ได้เมานต์ - ซึ่งก็ใช้ได้

บันทึกไฟล์ tar ใน Dropbox ของคุณ เมื่อคุณต้องการลิงค์กลับให้คัดลอกไฟล์ tar ไปยังไดเรกทอรีในระบบไฟล์ของคุณ (ไม่อยู่ใน Dropbox) แยกมันออก (เพียงคลิกขวาและเลือก "แยกที่นี่") และคัดลอกลิงก์สัญลักษณ์ของคุณกลับไปยังตำแหน่งที่คุณต้องการ .

วิธีที่ 2

หาก symlink ที่คุณต้องการบันทึกมีคำนำหน้าชื่อเดียว (เช่น "MySl" ... ) คุณสามารถทำให้ tarfile ของคุณได้อย่างรวดเร็วด้วยวิธีนี้ (เพิ่มช่องว่างที่ไม่จำเป็นเพื่อป้องกันข้อผิดพลาด):

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

จุดเดียวหลังจาก "ค้นหา" หมายถึงไดเรกทอรีปัจจุบัน: เปิด Terminal ในที่บ้านของคุณ (ตามค่าเริ่มต้น) คุณสามารถเพิ่มพา ธ ไปยังไฟล์ tar และคุณสามารถออกคำสั่งจากไดเร็กตอรี่อื่นที่ไม่ใช่โฮม: แทนที่ "." ด้วยพา ธ ไปยังบ้าน / ผู้ใช้ของคุณ ไม่จำเป็นต้องสร้างไดเรกทอรีงานเป็น MyLinks ด้านบน การคืนค่า symlink นั้นรวดเร็วเช่นกัน: คุณคัดลอก tarfile ไปที่บ้านของคุณคลิกขวาที่มันและ "แยกที่นี่" อย่างไรก็ตามก่อนที่จะเริ่มต้นนำหน้าชื่อทั้งหมดของ symlinks ของคุณให้ดูที่ตัวเลือกถัดไป

วิธีที่ 3 (และดีที่สุด)

วิธีที่รวดเร็วในการรวบรวม symlink ทั้งหมดของคุณในไฟล์ tar คือเปิด Terminal ในบ้าน / ผู้ใช้ของคุณ (ซึ่งเป็นค่าเริ่มต้นเมื่อคุณเปิด Terminal) และ:

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

ข้อเสียคือคุณจะได้รับลิงค์ทั้งหมดของคุณรวมถึงลิงก์โมซิลล่าหรือ hplip ที่คุณไม่เคยรู้มาก่อน เพื่อหลีกเลี่ยงปัญหานี้และเพื่อคัดลอก symlink ทั้งหมดจากรายการไดเรกทอรีที่ระบุโดยไม่ต้องเรียกซ้ำคุณเขียนรายการหลังจาก "ค้นหา" ในคำสั่งด้านบน สมมติว่าคุณต้องการบันทึกลิงก์จากที่บ้าน / ผู้ใช้และเดสก์ท็อป คุณสามารถเขียน

 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 ใน dir บ้านของคุณ (.bash_aliases เป็นวิธีที่สะดวกมากในการรวบรวมนามแฝงของคุณและทำไมไม่บันทึกพวกเขาลงใน Dropbox ... ) เพียงสร้างไฟล์ว่างใหม่ชื่อ. bash_aliases ในโฮม dir ของคุณ (นั่นคือ / home / user) เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความและเขียนบรรทัดต่อไปนี้ลงไป:

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

แทนที่ไดเรกทอรีหลังจาก "ค้นหา" ด้วยรายการที่คุณเลือกและ "save_symlinks" ด้วยชื่อคำสั่งที่คุณเลือก ในการกู้คืนให้เปิดตัวจัดการไฟล์ของคุณ (หากเส้นทางไปยังไดเรกทอรีในคำสั่งด้านบนไม่สมบูรณ์แน่นอนต้องอยู่ในบ้าน / ผู้ใช้ tarfile คลิกขวาและแตกไฟล์

หากคุณทำสิ่งนี้ชีวิตจะง่ายขึ้น สิ่งที่คุณต้องทำคือ:

SAVE: พิมพ์ save_symlinks ใน Terminal บันทึก tarfile ในบ้านของคุณไปที่ Dropbox; เรียกคืน: คัดลอกไฟล์จาก Dropbox ไปยัง dir ที่บ้านของคุณคลิกขวาที่ไฟล์แล้วเลือก "แตกที่นี่"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.