GNU Coreutils 'mv --exchange' parametresi ile iki dosyayı tek komutta değiştiriyor
Öne çıkanlar
- GNU coreutils 9.5 sürümüyle gelen --exchange parametresi iki dosyanın yerini tek komutla değiştiriyor.
- İşlem Linux çekirdeğindeki renameat2() çağrısını kullanarak atomik seviyede kesintisiz takas sağlıyor.
- Dizin takaslarında komutun hata vermemesi için -T parametresinin kullanılması gerekiyor.
- Takas işleminin çalışması için her iki dosyanın aynı dosya sisteminde bulunması şart koşuluyor.
Linux kullanıcılarının iki dosyanın adını veya yerini birbiriyle değiştirmek için kullandığı üç adımlı geçici dosya yöntemi GNU coreutils 9.5 sürümüyle değişti. Araç setine eklenen "--exchange" parametresi, iki dosya yolunun içeriğini ve adını tek bir işlemle takas etme imkanı sunuyor. Bu yenilik, özellikle yapılandırma dosyalarının güncellenmesi veya eski sürüme döndürülmesi süreçlerinde ortaya çıkan geçici dosya oluşturma zorunluluğunu ortadan kaldırıyor.
Yeni özellik, Linux çekirdeğindeki "renameat2()" sistem çağrısını "RENAME_EXCHANGE" bayrağıyla birlikte çalıştırıyor. Bu mekanizma sayesinde takas işlemi atomik olarak gerçekleşiyor ve süreç boyunca her iki dosya adı da sistemde kesintisiz şekilde varlığını koruyor. İşlem dizinler üzerinde uygulanırken, "mv" komutunun hedef dizine taşıma varsayımını engellemek için "-T" (--no-target-directory) parametresinin eklenmesi gerekiyor.
İşlemin başarılı olabilmesi için her iki dosyanın aynı dosya sistemi üzerinde bulunması şart koşuluyor. Çekirdek düzeyindeki kısıtlama nedeniyle farklı dosya sistemleri veya bağlama noktaları arasında atomik takas yapılamıyor. Özellik ext4, Btrfs, XFS ve tmpfs gibi yaygın Linux dosya sistemlerinde destekleniyor ve GNU coreutils 9.5 veya daha yeni sürümleri barındıran güncel dağıtımlarda kullanılabiliyor.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.