Ubuntu 18.04で2つの異なる場所を持つ1つのフォルダー


10

Ubuntuの2つの異なる場所に同じフォルダーを配置したいのですが。何かを更新すると、他の場所でも更新されます。

どうすれば実現できますか?


8
それらの2つの場所は物理的である必要がありますか(2xがスペースを占有する場合など)、またはリンクにすることができますか?
Rinzwind

19
A symbolic linkは要件に対する最も簡単な解決策であり、スーパーユーザー権限に依存しません。man ln詳細については。
doneal24

回答:


16

バインドマウントを使用します

既存のディレクトリが/home/pandey/originalあり、それをミラーリングして/home/pandey/mirror、どちらかで行うすべての処理がもう一方のディレクトリでも自動的に行われるようにするとします。

これは、2つのディレクトリ間での同期やコピーを必要としません。バインドマウントはちょうど別のあるビュー元のディレクトリに、どのような1で発生し、他で行われます。

  1. (ユーザーとして)新しいディレクトリを作成します/home/pandey/mirror

    mkdir /home/pandey/mirror
    
  2. 元のディレクトリを新しく作成したパスにバインドマウントします。これにはrootアクセスが必要です:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. 楽しい。

これを元に戻すには、単に

sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror

bind- mounts に関するこの質問と、stackexchange に関する未解決の自己回答も参照してください。


3
+1、確かにこの方法は私が提案した方法よりも高速です。
Codito ergo sum

13
Would'd cd /home/pandey; ln -s original mirror同じ効果を持っているとはsudoの権限を必要としませんか?
doneal24

19
ええ、なぜこれが単純なシンボリックリンクの古典的な使用例のように聞こえるのに、人々がこれらのラウンドアバウト交差点の解決策を提案しているのか疑問に思います。利点は何ですか?私が見る限り、参照された質問にリストされている利点はどれもここには当てはまらないようです。
Voo

5
@ doneal24同意します。シンボリックリンクは実用的な観点から同じ効果があり、基本的なシステム変更や管理者権限を必要としません。
バナジウム

2
バインドマウントに関するリンクされた質問には、考えられる使用例の優れたリストがあります。ディレクトリへの別の名前付きパスが必要なだけではありません。
ドゥブ

44

コメントで指摘されたが、適切な答えではない:

多くの場合、シンボリックリンクが最も簡単なソリューションです。

コマンドラインで簡単に作成できます(パラメーターln付きのコマンドを-s使用)。GUIを使用しても簡単に作成できます。ほとんどのファイルブラウザー(nautilusなど)では、修飾キー(CTRL + SHIFT)を押しながらドラッグアンドドロップ(ファイルの移動など)を使用してシンボリックリンクを作成できます。

コマンドラインの使用例:

$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls 
first_dir  second_dir

$ touch ./first_dir/test_1
$ touch ./second_dir/test_2

$ ls ./first_dir 
test_1  test_2

$ ls ./second_dir
test_1  test_2

2

これは、crontabジョブを設定することで実行できます。

  • ターミナルを開いて入力 crontab -e
  • ivimエディターの挿入モードをアクティブにするために押します。

そこで実行したいコマンドを入力して、フォルダのすべてのファイルを別のフォルダにコピーできます。たとえば、内のすべてのファイルをコピーする場合/home/user/folder_name/home/user/public、あなたの中に、このコマンドを挿入する必要がありcrontab、ファイル:

rsync /home/user/folder_name -r /home/user/public

これにより、必要な間隔ですべてのファイルがコピーされます。毎日21:30にすべてのファイルをコピーする場合、編集は次のようになります。

 30 21 * * *  rsync /home/user/folder_name -r /home/user/public

詳細については、crontabの外観ここまたは使用man crontab


@PerlDuckとしてバインドマウントを使用する可能性があります。フォルダーを複数の場所に同期することになり、最初のフォルダー内のファイルが非常に大きいか多数である場合、マシンであらゆる種類のパフォーマンスの問題が発生する可能性があるため、cronjobsは使用しません。私の会社はDropbox / Driveの動作をエミュレートするためにこのアプローチを使用しており、GBのサイズのファイルを含む多数のファイルに到達したため、ソリューションは拡張できなくなりました。
名前なし、

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