10.04.2025

Powershell ile symbolic ve hard link oluşturma ve sorgulama

C: sürücümüzün kökünde büyük bir dosya oluşturalım.

fsutil file createnew buyuk-dosya.txt (5GB)

Şimdi de profil klasörümüze gelip bu dosyaya bir sembolik link oluşturalım. mklink komutu ile ve Powershell ile bunu aşağıdaki gibi yapabiliriz.

mklink sembolik-link.txt C:\buyuk-dosya.txt

New-Item -ItemType SymbolicLink -Name sembolik-link.txt -Target C:\buyuk-dosya.txt

Sembolik link yaratılacak nesne bir dosya değil de bir klasör olsaydı

mklink /D sembolik-klasor C:\hedefklasor

New-Item -ItemType SymbolicLink -Name sembolik-klasor -Target C:\hedefklasor 

Bir dosyaya hard link oluşturmak için ise

mklink /H sembolik-link2.txt C:\buyuk-dosya.txt

New-Item -ItemType HardLink -Name sembolik-dosya2.txt -Target C:\buyuk-dosya.txt

Hedefimiz bir klasör olsaydı hardlink yerine junction kullanmamız gerekecekti.

mklink /J junction-klasor C:\hedefklasor

New-Item -ItemType Junction -Name junction-klasor -Target C:\hedefklasor

Sembolik link durumunda orijinal dosyayı sildiğimizde sembolik link öksüz kalır, veriler gitmiş olur. Hardlink durumunda ise orijinal dosya silinse bile veriler silinmez, hardlink aracılığıyla erişilebilir.

Peki bu yöntemlerin herhangi biriyle oluşturulan linkler diskte ayrıca her kaplar mı? Cevap hayır. Gerek Sembolik gerekse hardlink diskte orijinal dosyadan başka yer kaplamaz. Linkler üzerinden dosya içeriği değiştiği zaman hardlink'lerin LastWriteTime özniteliği değişir, ama symbolik link'in değişmez.

Bu işlemlerin hepsi için yönetici yetkileri gerekir.

Ama aşağıdaki gibi var olan dosyaların özelliklerini sorgulamak için yönetici yetkileri gerekmez.

dir | select Name, LinkType, Target, Attributes


Hiç yorum yok: