Tüm sembolik bağlantı niteliklerini (sahip ve izinler gibi) korurken sembolik bir bağlantıyı (işaret ettiği dosyayı değil) Perl programında nasıl kopyalarım?Sembolik bağları Perl'de nasıl kopyalarım?
sayesinde splintor
Tüm sembolik bağlantı niteliklerini (sahip ve izinler gibi) korurken sembolik bir bağlantıyı (işaret ettiği dosyayı değil) Perl programında nasıl kopyalarım?Sembolik bağları Perl'de nasıl kopyalarım?
sayesinde splintor
Perl size bir sembolik bağın hedefini öğrenmek için readlink()
işlevini kullanabilirsiniz.
Ayrıca, sembolik bağlantıların izinlerini okumak için lstat()
işlevini de kullanabilirsiniz (sembolik olarak işaretlenen dosyanın ayrıntılarını okuyacak olan stat()
'un aksine).
Perl'in lchown()
sistem çağrısını açığa çıkarmaması nedeniyle, yeni sembolik bağlantıda sahipliğin asıl olarak ek bir yardımı olmadan yapılması mümkün değildir. Bunun için CPAN'dan Perl Lchown
modülünü kullanabilirsiniz.
varsayarsak yeterli izinleri (nb: kontrolsüz code) sembolik bağ üzerinde izinleri hakkında endişelenmenize gerek yok
use Lchown;
my $old_link = 'path to the symlink';
my $new_link = 'path to the copy';
my $dst = readlink($old_link);
my @stat = lstat($old_link);
symlink $dst, $new_link;
lchown $stat[4], $stat[5], $new_link; # set UID and GID from the lstat() results
- -rwxrwxrwx
modül File::Copy::Recursive o ilgilenir olarak her zaman görünür . Varsayılan olarak, sembolik linkleri kopyalayacak ve sahipliğini korumaya çalışacaktır.
İşaretçi için teşekkürler. Dağıtımımda yok ve bu modülü eklemek istersem bunu düşünmeliyim. Ayrıca kaynakta dosyanın sahibinin ele alınmadığını görüyorum. Benim için ne kadar önemli olduğunu tekrar düşünmem gerek. – splintor
Splintor ile aynı fikirdeyim - bu çalışırken, modül varsayılan yüklemede değil, dolayısıyla kullanıcılarınızın bağımlılıkları yüklemekten kaçınmak istiyorsanız iyi bir çözüm olmayacaktır. – JosephH
Teşekkürler. Simitlerin gerçek izinleri olmadığını fark etmedim. Sahibi değişikliği ne kadar kötü ihtiyacım olduğunu düşünmem gerek. – splintor
ayrıca, link bağlantısının içeriğinin bir _relative_ yolu olması durumunda, eğer $ old_link ve $ new_link aynı dizinde bulunmuyorsa yeniden yazmanın gerekli olabileceğini de unutmayın! – Alnitak