Orijinal bağlama noktası içeriğine erişim


32

Benim başsız On NAS ben sdf1olarak (flash-kart) monte /ederken /homedan monte edilir lv00(bir LVM hacmi bir yazılım RAID destekli). RAID başarısız olduğunda makineyi erişebilir olmak gerekirse, benim ssh ortak anahtar, vb bir kopyasını /home/foo/.sshgelen dosya sistemi üzerinde sdf1.
Monte tarafından gizli dosyaları güncellemek için /homenormalde yeniden bağlama I lv00içinde /mnt/home, yapmak ve sonra hareket gerekeni yap lv00yerine geri.
Bunu kaldırmadan elde etmenin bir yolu var mı /home?

Yanıtlar:


44
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh

Kullandığınız sürece --bind(aksine --rbind), üzerine monte edilmiş malzemeler olmadan klonun bir klonunu elde edersiniz.


Mükemmel! Fikriyle oynuyordum mount --bind, ama sadece ihtiyacım olduğunda kırılacak kesin fikirleri aldım. Bu tam olarak ihtiyacım olanı yapıyor ve kalıcı bir montaj olarak bile girebiliyor. Teşekkürler
Janus


Diğer cevabın da kapsadığı gibi bir mount ile kaplanmış olduğunuz dizinin üstündeki bir seviyeye bağlanmak zorunda olduğunuz gerçeğini dahil etmek bu cevabı düzenlemeye değer mi? Bu cevap daha iyidir, çünkü daha kısadır ve bu nedenle hızlıca okunması daha kolaydır!
Michael Firth

5

Benzer bir şey elde etmeye çalıştım, ancak ephemient'in cevabı yöntemin anlamını açıklamadı. Benim için başarısız oldu ve bu yüzden hemen hemen aynı soruyu daha önce burada unix.SE.'de sordum. Bir yorumdan sonra kendi başıma çözdüm ve cevapladım. Bu, bu içeriğe uymak için cevabımın düzenlenmiş bir versiyonudur. Diğer sorumu (ve cevabını) bunun lehine kaldırdım.

İşte yapmaya çalıştığım şey:

Örnek vaka

Bağlantılar:

/dev/sda1  on /     type ext4 (rw)
/dev/sdb1  on /data type ext4 (rw)
/data/home on /home type none (rw,bind)

Montajdan sonra kullanıcı için /bir klasörüm var . Diğer konum bir kez monte edildikten sonra ( ) mevcut tüm ev klasörleri setine sahibim, bu yüzden onları yerinde birleştiriyorum ( ). Bir klasör var , başarılı olduğu sürece , içeriğini alacak , aksi takdirde geri dönecek (açık !)./home/joejoe/data/data/home on /home/data/home/joe/dev/sdb1/data/home/joe/home/joe/dev/sda1

Ne zaman Başarılı, nasıl orijinal içeriğini erişebilirsiniz /home/joe(on /dev/sda1!) Yerine gelen yerine bağlamak monte olanlar /data/home/joe?

Çözüm

Tarafından bir açıklama dayanarak Patrick sorumu ve ephemient solüsyonun (burada kabul yanıt) üzerinde un yorumunu ben aşağıda ortaya attı.

O olduğu için görünüşte mümkün mount --bind(veya mount -o bind) ana klasör ( bu çok önemli bir parçasıdır bir başka yerde bağlama monte ve böylece orijinal içeriğine erişmek). Öyleyse, benim örnek davam için, denemek yerine:

mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath

(yani önceden bağlanmış konumların başka bir yere monte edilmesi):

test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath

Demek Patrick'in yorumunda kastedilen bu.

Yeniden /(kök) yeniden ayarlamadığınız sürece , bu cevap çok iyi sonuç vermelidir.

Bağlanılan yere bağlı bir üst klasörünüz olduğu sürece, yukarıda gösterildiği gibi bir indirime rağmen çalışacaktır. Üzerine bir şey bağlarsanız /, üst klasör olmadığından, şansınız kalmaz /.


Üst klasörün montajı , eksik olduğum anahtar bölümdü. Teşekkürler.
Ai

1

Aşağıdakileri kullanarak, montajı sökmeden yeni bir konuma taşıyabilirsiniz mount --move:

$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home

1
Sağol Michael. Bu, diğer kullanıcıların erişemeyeceği şekilde ev / konut yapmanın dezavantajına sahiptir.
Janus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.