Sabit bağlantı oluşturmak ne zaman yararlı olur?


11

Temel olarak sabit bağlantılarla iki ana sınırlama vardır:

  1. Sabit bağlantılar normalde bağlantının ve dosyanın aynı dosya sisteminde bulunmasını gerektirir.
  2. Yalnızca süper kullanıcı bir dizine sabit bir bağlantı oluşturabilir.

Böylece, sert linklerin sınırlarını aşmak için sembolik linkler getirildi. Yani soru şu: Sabit bağlantılara hala ihtiyaç var mı? Daha faydalı oldukları bir durum olabilir mi?


3
1) Simgeler bazı HTTP sunucuları tarafından takip edilmez 2) Yedeklemeler için sabit bağlantılar kullanılabilir 3) Kökler arasında unix yuvalarını paylaşabilirsiniz 4) Sabit bağlantının herhangi bir sürümünü diğerlerini etkilemeden silebilirsiniz
Dietrich Epp

Bu HTTP sunucuları, bir sembolik bağlantıyı gösteren bir sabit bağlantı kullanabilir mi? , Yoksa saçma mı konuşuyorum?
arana

Yanıtlar:


11

Sabit bağlantılar dosya sistemimizi çok daha esnek bir şekilde düzenlememize yardımcı olur. Temel olarak, sabit bağlantılar bir dosyayı almamıza ve aynı anda dosya sisteminde birden fazla yer olmamıza izin verir. Fotoğrafçı olduğunuz ve çok sayıda fotoğrafınızın olduğu bir senaryo düşünün (bu benim hayatımdan bir örnek!). Onları içinde görünen insanlar tarafından organize edebilirsiniz, çünkü bazen insanlar sizden fotoğraflarını ister. Ancak bunları konuma ve tarihe göre düzenlemek de isteyebilirsiniz. Bu üç şeyi yuvalamanın gerçek bir yolu yok, bunlar tamamen ayrı organizasyon eksenleri. Bu üç farklı şeyler için üç farklı hiyerarşileri oluşturmak ve, üçünde de her fotoğraf mevcut olabilir Yani olmadanher fotoğrafı üç kez saklamak zorunda. Sert bağlantıların büyüsü bu. Bağlantıları kaldır, "gerçek dosyanın" nerede olduğu konusunda endişelenmemize gerek yok, çünkü hepsi gerçek dosya. Dosya artık referans alınmayana kadar saklanacağından ve son sabit bağlantıyı sildiğinizde kaldırılacağından, dilediğiniz zaman silebilir ve taşıyabiliriz. Çok basit ve çok fazla takip etmenizi gerektirmez.


1
Ya da bir ila üç adlarıyla çağırmak istediği bir programa sahip olabilir gzip, gunzipve zcat.
JdeBP

8

Bir dosyanın içeriği, tüm sabit bağlantılar (evet, tüm dosya adları sabit bağlantılardır, birincisi bile) silinene ve dosya kapatılıncaya kadar temizlenmez. Bu nedenle, bir dosya birden fazla yerde gerektiğinde yararlı olabilir, ancak herhangi bir zamanda, örneğin ~/Downloads/coolsong.mp3ve arasında herhangi bir zamanda kaldırılabilir ~/Music/Cool Song.mp3.


3
Bu doğru. Temiz film klasörümde doğru adlandırılmış dosyaya sahipken bir torrent tohumlamaya devam etmek için kullanıyorum. Tohumlanan dosyaları taşımak ve yeniden adlandırmaktan çok daha kolaydır ve tohumlama işini bitirdiğimde torrent klasörünü silebilirim. Ayrıca Couch Potato bunu yapar.
Nicolas Bouliane

1

Bir sabit bağlantının sembolik bir bağ üzerindeki çok önemli bir avantajı, bir sabit bağlantının inode'una ulaştığında, çekirdeğin dosyaya erişmek için yapacak başka bir işleminin olmamasıdır. Sembolik bir bağlantıyla karşılaştığında, çekirdek bağlantı değerini okumalı ve dosyanın yapısına ulaşmadan önce dizin yapısını taramaya devam etmelidir. Bu fark daha kolay ölçülmemesine rağmen daha uzun sürer. Symlink değerindeki öğelerden birinin kendisi bir symlink olduğunda gerçekten eğlenceli olur.


Mükemmel nokta. Solaris'te, semboller kullanılarak döngüler oluşturulabilir, bunların işlenmesi daha da eğlenceli :-)

1

sabit bağlantıların birkaç nedeni vardır

  1. Son referans gidene kadar bir dosyaya yapılan referansları tutmak (Ignacio'nun belirttiği gibi)
  2. dosyaları sabit bağladığınızda, dosya sistemindeki yalnızca bir dosyanın alanını kaplarlar (dosyaya yapılan her iki başvuru da aynı i-düğümlerini paylaşır). Bu nedenle sabit bağlantılar aynı dosya sisteminde olmalıdır.

Bu yüzden sabit bağlantıları kullanmanın bir nedeni muhtemelen çok fazla yer kazanmaktır ...

Referanslardan birine ekleyebilirsiniz ve veriler paylaşılan dosyaya gider. Ayrıca diğerinden okurken bir dosya tanımlayıcıya ekleyebilirsiniz (örn. Tail -f ile)


0

Burada verilen örneklerin çoğu geçerlidir, ancak yumuşak bağlantılarla eşit derecede iyi çalışır (örneğin "birden fazla yerde bir dosyaya ihtiyaç var" sorunu).

Sabit bağlantıların gerçekten yararlı olduğu yerlere güzel bir örnek Dirvish yedekleme yazılımıdır :

Dirvish hızlı, disk tabanlı, dönen bir ağ yedekleme sistemidir.

Dirvish ile, dosya sistemlerinizin bir dizi eksiksiz görüntüsünü katılımsız oluşturma ve son kullanma tarihi ile koruyabilirsiniz. Kirli bir yedekleme kasası, verileriniz için bir zaman makinesi gibidir.

Dirvish, dosyaları ayrı (yedek) bir dosya sistemine (USB sabit disk gibi) kopyalayarak dosya sistemi düzeyinde yedekler oluşturur (yani dosyaları kopyalar, görüntü oluşturmaz). Her yedekleme yaptığınızda, dirvish kaydedilecek dizin ağacının ayrı ve eksiksiz bir kopyasını oluşturur.

İşin püf noktası, dirvish, kaydettiğiniz ağacın daha eski bir yedek kopyasının olduğunu algılarsa, yeni ağaçta eski ağaçtaki dosyaya sabit bir bağlantı oluşturarak değiştirilmemiş dosyaları otomatik olarak yeniden kullanacaktır.

Bu şekilde, her yedek kopya, dizin ağacının eksiksiz, bağımsız bir kopyasıdır, ancak aynı zamanda yalnızca değiştirilen dosyalar dosya sisteminde gerçekten yer kaplar. Diğer bir deyişle, artımlı yedeklemelerin (yerden tasarruf) ve tam yedeklemelerin (kolay erişim) avantajlarından aynı anda faydalanırsınız.

Bu sadece sabit bağlantılar kullanıcı alanı araçlarına tamamen şeffaf olduğu için mümkündür.

Bu muhtemelen sembolik bağlantılar ile de çalışır (sembolik bağlantılar kullanan verileri yedeklerken sorun yaşarsanız da), ancak yalnızca sabit bağlantılarla mümkün olan bir avantaj:

Eski yedekleri atmak istiyorsanız, karşılık gelen yedekleme dizini ağacını silebilirsiniz. Yalnızca bu ağaçtan bağlanan dosyalar dosya sistemi tarafından otomatik olarak silinir (son sabit bağlantıları silindiği için), ancak diğer kopyalarda da görünen dosyalar diskte kalır.


Rsnapshot gibi geliyor.
Ignacio Vazquez-Abrams

0

Yararlı bir örnek, büyük bir geçici tarball indirmeniz gereken bir programınız (veya komut dosyanız) olduğunda ve onu çıkardıktan sonra programınız hemen siler.

Herhangi bir nedenle bu tarball'ı ileride kullanmak üzere korumak istiyorsanız ln /tmp/tarball.tgz ~, tarball hala indirilirken en iyi yol ls . O zaman hiçbir şey yapmanıza gerek yok.

İndirme işlemi tamamlandığında ve programınız 'orijinal' olanı sildikten sonra bile, tam kopya yine de ana dizininizde olmalıdır.


0

'HowTos' ve Snippet'lerimi yedeklemek için 'Sabit Bağlantılar'ı kullanıyorum

Kullanıcı / root'umda 'Paylaşılan Dokümanlar' adında bir dizin var. Bu dizinde benim ipuçları, püf noktaları, snippet'ler, uygun dizinlerinde yaşayan howto'lar için 'sabit bağlantılar' var; php, mysql, css, regex, formüller, linux, vs.

Uzun zaman önce sembolik bağlantıları kullandım. Bu ortak 'Paylaşılan Dokümanlar' dizinini sunucuma sadakatle yedeklerdim. Sorun, sembolik bağlantılar veya 'Yumuşak Bağlantılar', kopyalanırsa (cp -auv) veya tar'ed ve kopyalanırsa, SADECE belgenin içeriğini DEĞİL, 'bağlantı'yı yedekleyin veya kopyalayın. Bu yüzden, dizinleri dolaşıp 2 düzine dosyanın her birini gerçek konumlarından kopyalamam gerekir.

SABİT BAĞLANTILAR ile, 'Paylaşılan Belgeler' dizinini kopyalayabilir, katlayabilir, rsync yapabilir ve aslında bu yaygın şekilde dağıtılmış belgeleri güvenle yedekleyebilirim, içerik aslında yedeklenir. Benim için gerçekten berbat, fark ettiğimde 0 ısırık 'link dosyalarını' yedekledim ve bilgiyi değil.

'Sabit Bağlantılar' kullanmanın bir dezavantajı, bir dizinde ls yapmanın bir dosyanın başka bir dosyaya 'bağlı' olduğunu veya o dosyanın birlikte varolabileceğini göstermemesidir. Onları bulmanın yolları var, ama basit bir ls -l -> işaretiyle açık değil diyorum ... Yani, genellikle belgenin başına hangi dizinin / dosyaların bu dosyayı belirten bir not ekliyorum 'ile' paylaşılıyor '

Landis.

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.