Dropboxでシンボリックリンクはどのように機能しますか?


20

フォルダー内のファイルへのリンクを作成しました。そのフォルダーをDropboxに追加すると、リンクにはリンク先のファイルの重複コピーが含まれていました。この問題がありましたか?何が起こっているのか理解していますか?解決策はありますか?

この質問をより明確にするために:Dropboxに接続する前のファイルマネージャーの「タイプ」列で、Link_to_notesがリンクであることが示され、サイズは32バイトでした。Dropboxに接続した後、Link_to_notesはプレーンテキストドキュメントであることが示され、サイズは18.7 kB(ノートファイルのサイズ)でした。


2
Dropboxがクロスプラットフォームソリューションである場合、他のすべての動作はおそらくさらに複雑になります。フォルダをWindowsマシンと同期するとどうなりますか?
セルゲイ

2019年半ば以降、Dropboxはシンボリックリンクをフォローしなくなりました
eri0o

現在の執筆時点では、シンボリックリンクは機能しなくなり、ひどいものです。
Jus12

回答:


15

DropBoxはシンボリックリンクに従い、それらをディレクトリとして扱います。ファイルやディレクトリをDropBoxディレクトリに移動することなくバックアップするのに非常に便利です。

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

これは危険な動作になる可能性があります。たとえば、Dropboxディレクトリからリンクを削除した場合、元のファイルやフォルダーも誤って削除してしまう可能性があるシナリオはありますか?
中古Vicon

@Vicon、これは危険な動作ではなく、予想される動作です。しかし、はい、明確にするために、シンボリックリンクを削除すると、ファイルもDropboxから削除されます。
グレゴロジー

2
Dropboxコミュニティでは、Dropboxはシンボリックリンクをサポートしておらず、それを使用しないように強くアドバイスしていることが何度も述べられています。Dropboxカスタマーサポートに連絡すると、先に進む前にシンボリックリンクを削除するように求められます。もちろん、人々はまだそれを使用することができますが、これはDropboxが意図した動作ではなく、危険(ファイルを失う)、問題のある(意図せずに複製されたファイルが重複している、この質問で解決するよう求められる問題です)同期パフォーマンスの問題などとして
Vicon

@Vicon、シンボリックリンクは多くの操作に対して透過的に動作します。シンボリックリンクで指定されたファイルを読み書きするプログラムは、ターゲットファイルを直接操作するように動作します
Gregology

1
この方法は、ext4ファイルシステムで長い間うまく機能しました。Dropbox内でDropboxファイルを操作したことがないため、危険を感じません。LinuxシステムとAndroidタブレットをリンクすることに成功しました。しかし、私はこのリンクが私のアドバイスが時代遅れ
pauljohn32

7

それを行う最良の方法は、ファイルをdropboxフォルダーに保存し、外部からシンボリックリンクすることです...

〜/ Dropbox / Documentsとシンボリックリンクを作成します。

ln -s ~/Dropbox/Documents ~/Documents

これにより、Dropboxが混乱したり、内部のリンクであるリンクを解除したりすることがなくなります。基本的なルールは、Dropboxフォルダー内のどこにもシンボリックリンクを持たないことです...それらをDropboxフォルダー外に持っていれば問題ありません。

私はいくつかのubuntuマシンにDropboxを持ち、実際にすべての主要なトップレベルのフォルダをDropboxに保存しています。


Dropboxが混乱するのはなぜですか?また、Dropboxはシンボリックリンクをどのように変更しますか?シンボリックリンクはファイルシステムによって自動的に解決されます
Gregology

6

dropboxはディレクトリへのsymリンクをたどりますが、ファイルへのリンク(symまたはhard)を切断し、ファイルに置き換えます。


2

TL; DR:以下は、グラフィカルユーザーインターフェイス(GUI)レベルでのみシンボリックリンクに非常に似た動作を取得する方法です。これは、DropBox内の同じフォルダーをDropBox内の別のフォルダーに繰り返しコピーしたくない場合に特に役立ちます階層を別の場所(フォルダーパスなど)から表示するためです。

バックグラウンド

DropBoxフォルダー階層内にシンボリックリンク(シンボリックリンク)を作成すると、アカウントがいっぱいになるまで、DropBoxがフォルダーを複製することに何度も苦しめられました。多くの人がウェブ上で注目しているように、DropBoxがシンボリックリンクを適切に処理できないことに対する本当の修正はありません。

回避策

ただし、DropBox階層内のシンボリックリンクと同等の動作を実現するために使用する回避策の1つ---他の人がよく「内部シンボリックリンク」と呼ぶもの--- DropBoxがすべてを複製することなく、Windowsショートカットファイルに相当するものを作成することです(つまり、 、MSエコシステムの.lnkファイル)。これを行うには、システムのファイルマネージャーを目的のパスに開く.desktopファイルを作成します。したがって、この回避策はGUIレベルでのみ機能し、XDG準拠のシステム(Ubuntu、GNOMEベースのシステム、その他多数)でのみ機能します。

たとえば、私が取っている新しい仕事のための高度なPythonテクニックを読んでいて、読んでいるPDFはGoodReaderアプリ(iOS)のDropBoxフォルダーに保存されているので、両方をデスクトップで読むことができますそして私のモバイルデバイスで。そのフォルダー(/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 ...あなたはノーチラス以外のファイルマネージャを使用している場合は部分を、そしてもちろん、あなたは適応したいと思うでしょうName=Icon=の、およびパス部分Exec=それぞれ「シンボリックリンク」は、作成したいの行を。)

これにより、シンボリックリンクのように動作するPythonという名前のフォルダーがデスクトップに表示されます。つまり、ダブルクリックすると適切なフォルダーが開きますが、小さなテキストファイル(Pythonなど)のみが表示されます。デスクトップ)は、DropBoxと他のシステムに同期されます(最終的にすべてのコンテンツがDropBoxによってどこにでも複製されるのとは対照的です)。

他の.desktopファイルと同様に、示されたアイコンが表示され、ダブルクリックして実際に何でもできるように、ファイルが読み取り可能および実行可能(たとえば、chmod 700 Python.desktopまたはchmod 755 Python.desktop)になるようにアクセス許可を設定する必要があります。

概要

要約すると、DropBox内のどこかで実際のファイルを常に利用できるようになります---この例では/home/morse/lib/active/GoodReader/Books/Python---しかし、Linuxベースのすべてのシステムでデスクトップへの「ショートカット」も用意しますDropBoxも構成されています。

もちろん、この回避策は、真のシンボリックリンクのように、コマンドラインレベルでは機能しません。

そうは言っても、これはGUIレベルでの新しい回避策であるように見えますが、他の場所には投稿されていません。ですから、このアプローチが他の人にも役立つことを願っています。


これは天才です!これまで、内部シンボリックリンクの解決策を見たことはありません!そして、これは非常にきれいです。私の一日を作ってくれてありがとう!.desktopファイルを解析し、シンボリックリンクされたファイルまたはフォルダーを開くコマンドラインスクリプトを作成することは、かなり簡単である必要があることを追加する必要がありますが、ディレクトリに直接「cd」することはできません。
プラヴィーン

0

リンクを圧縮し、圧縮ファイルをDropboxに保存します

以前の返信は網羅的で明確です。単一の原則に基づいて、3つの回避策を提案するだけです。3番目はより難しいように見えますが、非常に効率的です。アイデアは、シンボリックリンクをtarファイルに圧縮します。これは、Dropboxはリンクとして扱わず、Dropboxに保存します。3番目の方法は、リンクをDropboxに直接コピーするのとほぼ同じです-実際には、複数のリンクを1つずつコピーするよりもはるかに高速です。

Lubuntuのインストールで通常使用するシンボリックリンクは20個ほどあります。たとえば、Dropboxに保存されたbashスクリプト、外部hdd、頻繁に使用されるドキュメントなどにすばやくアクセスできます。これらはすべてホームディレクトリとデスクトップにあります。 Dropboxのコピーを他のインストールに使用したり、dist-upgradeを実行したりするとき(つまり、dist-upgradeを試みた後に再インストールするときなど)に便利です。

第一の方法

MyLinks(たとえば、ドキュメント内)というディレクトリを作成し、そこにすべてのホームシンボリックリンクをコピーします。他のディレクトリにシンボリックリンクがある場合は、MyLinksにサブディレクトリを作成し、シンボリックリンクをそれらにコピーします。たとえば、保存するリンクがホームとデスクトップにある場合、ホームリンクをMyLinksにコピーし、その中にデスクトップというディレクトリを作成して、デスクトップリンクをコピーします。次に、ターミナルを開き、cd Documents(MyLinksが存在するディレクトリである場合)とtarファイルを作成します。

tar -cvf MyHomeLinks.tar MyHomeLinks

(「.tar」拡張子をtarfile名に追加することを忘れないでください。そうしないと、Ubuntu Archive Managerはそれを開くことを拒否します。)これを行う場合、tarにオプション-h(--dereference)を追加しないように注意してくださいDropboxとして正確に動作し、シンボリックリンクの代わりにターゲットファイルを圧縮します。(ちなみに、ほとんどの場合、そのような振る舞いは、特に移植性を目指している場合には歓迎されますが、シンボリックリンクをシンボリックリンクとして保存したい場合には歓迎されません。)

tarファイルには、現在マウントされていない外部hddへのリンクなど、一時的に壊れているリンクも含まれます。これは問題ありません。

Dropboxにtarファイルを保存します。リンクが必要になったら、tarファイルを(Dropbox内ではなく)ファイルシステムのディレクトリにコピーし、抽出(右クリックして[ここに抽出]を選択)して、シンボリックリンクを目的の場所にコピーします。 。

第二の方法

保存するシンボリックリンクに一意のプレフィックス(「MySl」など)がある場合、この方法でtarfileを非常にすばやく作成できます(間違いを防ぐために不要なスペースを追加します)。

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

「find」の後の単一のドットは現在のディレクトリを意味します:ホームディレクトリでターミナルを開きます(デフォルト)。tarファイルへのパスを確実に追加でき、ホームではない別のディレクトリからコマンドを発行できます。「。」を置き換えます。あなたのホーム/ユーザーへのパスで。上記のMyLinksのような作業ディレクトリを作成する必要はありません。シンボリックリンクの復元も迅速です:tarfileをあなたの家にコピーし、それを右クリックして「ここに抽出」してください。ただし、シンボリックリンクのすべての名前にプレフィックスを付ける前に、次のオプションを見てください。

3番目の方法(そして最高)

すべてのシンボリックリンクをtarファイルに収集する非常に簡単な方法は、ホーム/ユーザーでターミナルを開く(ターミナルを開いたときのデフォルト)、および:

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

欠点は、あなたが持っているとさえ知らなかったいくつかのmozillaまたはhplipシンボリックリンクを含む、すべてのリンクを取得することです。これを回避し、再帰なしで指定されたディレクトリのリストからすべてのシンボリックリンクのみをコピーするには、上記のコマンドの「find」の後にリストを記述します。ホーム/ユーザーおよびデスクトップからのリンクを保存するとします。あなたは書ける

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

「-maxdepth 1」は、findがホーム内で再帰しないようにします。必要に応じて、tarfileにパスを追加できます。代わりに:

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

あなたが怠け者でこれを頻繁に使用したい場合は、ホームディレクトリの.bashrcまたは.bash_aliasesにエイリアスとして追加できます(.bash_aliasesはエイリアスを収集し、保存しない理由としてドロップボックス...)。ホームディレクトリ(つまり、/ home / user)に.bash_aliasesという新しい空のファイルを作成し、テキストエディターで開き、次の行を書き込みます。

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

「find」の後のディレクトリを選択したもので置き換え、「save_symlinks」を選択したコマンド名で置き換えます。復元するには、ファイルマネージャーを開き(上記のコマンドのディレクトリへのパスが絶対パスでない場合、tarfileはhome / userにある必要があります)、右クリックして展開します。

これを行うと、生活が楽になります。あなたがしなければならないことは次のとおりです。

SAVE:ターミナルでsave_symlinksと入力し、ホームのtarfileをDropboxに保存します。復元:ファイルをDropboxからホームディレクトリにコピーし、右クリックして[ここから抽出]を選択します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.