Satu folder memiliki dua lokasi berbeda di Ubuntu 18.04

10

Saya ingin memiliki folder yang sama di dua lokasi berbeda di Ubuntu saya. Jika saya memperbarui sesuatu dalam satu, itu juga harus diperbarui di lokasi lain.

Bagaimana saya bisa mewujudkannya?

Aman Pandey
sumber
8
apakah 2 lokasi tersebut harus bersifat fisik (seperti dalam 2x mengambil ruang) atau dapatkah mereka menjadi tautan?
Rinzwind
19
A symbolic linkadalah solusi paling sederhana untuk kebutuhan Anda dan tidak tergantung pada hak pengguna super. man lnuntuk informasi lebih lanjut.
selesai24

Jawaban:

16

Gunakan bind mounts .

Misalkan Anda memiliki direktori yang sudah ada /home/pandey/originaldan ingin mem - mirror- nya /home/pandey/mirrorsehingga semua yang Anda lakukan di salah satu dari mereka secara otomatis dilakukan di yang lain juga.

Ini tidak memerlukan sinkronisasi atau penyalinan antara dua direktori. Sebuah bind mount hanyalah pandangan ke direktori asli dan apa yang terjadi dalam satu juga terjadi di lain.

  1. Buat (sebagai pengguna Anda) direktori baru /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount direktori asli ke jalur yang baru dibuat. Ini membutuhkan akses root:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Nikmati.

Untuk membatalkan ini, cukup

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

Lihat juga pertanyaan ini dan jawabannya sendiri di stackexchange tentang bind-mounts .

PerlDuck
sumber
3
+1, Pastinya cara ini lebih cepat dari cara yang saya usulkan;
Codito ergo sum
13
Apakah akan cd /home/pandey; ln -s original mirrormemiliki efek yang sama dan tidak memerlukan hak sudo?
selesai24
19
Ya saya bertanya-tanya mengapa orang mengusulkan solusi bundaran ini sementara ini terdengar seperti kasus penggunaan klasik untuk tautan simp sederhana. Apa untungnya? Sejauh yang saya bisa lihat, tidak ada kelebihan yang tercantum dalam pertanyaan yang dirujuk tampaknya berlaku di sini.
Voo
5
@ doneal24 Saya setuju: tautan simbolik memiliki efek yang sama dari sudut pandang praktis dan tidak memerlukan perubahan sistem mendasar dan hak administrator.
vanadium
2
Pertanyaan yang ditautkan pada bind mounts memiliki daftar yang bagus tentang kemungkinan kasus penggunaan. Hanya membutuhkan jalur bernama lain ke direktori bukan salah satunya.
Dubu
44

Seperti yang ditunjukkan dalam komentar tetapi bukan sebagai jawaban yang tepat:

Dalam banyak kasus, tautan simbolik adalah solusi termudah.

Anda dapat membuatnya dengan mudah di baris perintah (menggunakan lnperintah dengan -sparameter). Anda dapat membuatnya dengan mudah menggunakan GUI juga: Sebagian besar browser file (nautilus, ...) memungkinkan Anda membuat tautan simbolis menggunakan drag and drop (seperti untuk memindahkan file) sambil menahan tombol pengubah (CTRL + SHIFT).

Contoh untuk penggunaan baris perintah:

$ 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
mnagel
sumber
2

Anda dapat melakukannya dengan mengatur pekerjaan crontab:

  • Buka terminal Anda dan ketik crontab -e
  • Tekan iuntuk mengaktifkan mode penyisipan editor vim Anda.

Anda dapat memasukkan perintah yang ingin Anda lakukan di sana, sehingga Anda dapat menyalin semua file folder di folder lain. Misalnya, jika Anda ingin menyalin semua file /home/user/folder_nameke /home/user/publicAnda harus memasukkan perintah ini di crontabfile Anda :

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

Ini akan menyalin semua file dalam interval yang diinginkan. Jika Anda ingin menyalin semua file pada pukul 21:30 setiap hari hasil edit Anda seharusnya:

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

Untuk informasi lebih lanjut tentang crontab, lihat di sini atau gunakan man crontab.

Codito ergo sum
sumber
Saya mungkin akan menggunakan bind mounts sebagai @PerlDuck, diberikan adalah cara yang mudah dan dapat dipelihara untuk melakukannya. Saya tidak akan menggunakan cronjobs karena ini dapat menyebabkan semua jenis masalah kinerja pada mesin Anda jika Anda akhirnya menyinkronkan folder ke beberapa lokasi dan file di folder pertama sangat besar atau banyak. Perusahaan saya menggunakan pendekatan ini untuk meniru perilaku Dropbox / Drive dan sekarang kami telah mencapai sejumlah besar file, beberapa di antaranya memiliki ukuran GB, solusinya tidak berskala lagi.
nonameable
2
Ini adalah dua direktori, bukan satu.
mengamuk