Yeni yazı: Active Directory Sağlık Kontrolü: krbtgt Rotasyonu ve Hesap Yaşam Döngüsü
Linux Dosya Oluşturma ve Kopyalama Komutları: Dosyalarınızı Yönetmek

Linux Dosya Oluşturma ve Kopyalama Komutları: Dosyalarınızı Yönetmek

İçindekiler

cp masum görünen bir komuttur: kaynağı yazarsınız, hedefi yazarsınız, biter. Ama aynı komut, hedefte zaten bir dosya varsa hiçbir şey sormadan üzerine yazar — ve üzerine yazılan içerik geri gelmez. Kopyalamak kolaydır; komutun hangi durumda tam olarak ne yaptığını bilmek işin asıl kısmıdır.

Bu yazıda dosya oluşturmanın (touch, echo) ve kopyalamanın (cp) temel kullanımını, dizin kopyalarken neyin değiştiğini ve cp ile mv arasındaki gerçek farkı göreceğiz.

Dosya Oluşturma: touch Tarihi Günceller, echo İçeriği Yazar

Boş bir dosya oluşturmak için touch kullanırsınız:

touch yeni_dosya

Ama touch aslında bir zaman damgası komutudur: dosyanın son erişim ve son değişiklik zamanını o ana çeker. Dosya yoksa boş olarak oluşturması bu işin yan etkisidir. Bu yüzden var olan bir dosyaya touch çalıştırmak içeriğine dokunmaz — yalnızca tarihini günceller.

İçi dolu bir dosya isterseniz echo çıktısını yönlendirirsiniz:

echo 'Merhaba, dünya!' > merhaba

Buradaki > işareti komutun çıktısını ekrana değil dosyaya yönlendirir. Dikkat edilmesi gereken nokta şu: > dosyayı içeriğiyle birlikte sıfırlar. Dosya yoksa oluşturur, varsa içindeki her şeyi siler ve yalnızca yeni girdiyi yazar. Var olanın sonuna eklemek istiyorsanız >> kullanmanız gerekir:

echo 'ikinci satır' >> merhaba

Kopyalama: cp ve Dizinler İçin -r

cp en basit hâliyle kaynağı ve hedefi alır — aşağıdaki komut dosya‘yı yedek_dosya adıyla çoğaltır. Adları yazarken dikkatli olun: Linux’ta dosya adları büyük-küçük harf duyarlıdır, dosya ile Dosya iki ayrı dosyadır ve yanlış harf sessizce üçüncü bir dosya üretir.

cp dosya yedek_dosya

Dizin kopyalarken -r zorunludur. cp tek başına yalnızca dosya kopyalar; bir dizin verirseniz onu kopyalamaz, atlar:

cp proje/ proje_yedek/
# cp: -r not specified; omitting directory 'proje/'

cp -r proje proje_yedek

cp üzerine yazarken uyarmaz. Hedefte aynı adda bir dosya varsa sessizce ezer. Elle çalışırken -i (interactive) seçeneğini alışkanlık hâline getirmek, tek bir yazım hatasında veri kaybetmenizi engeller:

cp -i dosya yedek_dosya
# cp: overwrite 'yedek_dosya'?

Aynı Komutun İki Farklı Sonucu: Hedef Dizin Zaten Varsa

cp -r ile en sık düşülen tuzak burada: aynı komut, hedef dizinin var olup olmamasına göre iki farklı iş yapar.

# proje_yedek YOKSA → proje'nin kopyası proje_yedek adıyla oluşur
cp -r proje proje_yedek
ls proje_yedek
# notlar.md  rapor.txt

# aynı komutu ikinci kez çalıştırın → proje, mevcut dizinin İÇİNE kopyalanır
cp -r proje proje_yedek
ls proje_yedek
# notlar.md  proje  rapor.txt

Kaynağın sonuna / koymak bunu değiştirmez — rsync‘te değiştirir, cp‘de değiştirmez. Gecelik yedekleme betiğinizde proje_yedek/proje/proje gibi iç içe dizinler görüyorsanız sebebi budur.

Sonucun hedefin durumuna bağlı kalmasını istemiyorsanız -T ile hedefi “içine kopyala” değil “bu ol” diye işaretleyin:

cp -rT proje proje_yedek

-T GNU coreutils’e özgüdür; macOS’un BSD cp‘sinde yoktur. Hedefte zaten duran fazladan dosyaları da silmez, üzerlerine ekler — birebir ayna istiyorsanız doğru araç rsync -a --delete‘tir.

cp, mv, rsync: Hangisini Ne Zaman Kullanmalı

  • cp kaynağı yerinde bırakır, mv bırakmaz. Aradaki fark yalnızca kaynağın silinmesi de değildir: mv aynı dosya sistemi içinde veriyi hiç kopyalamaz, sadece dizin girdisini yeniden adlandırır. Bu yüzden 100 GB’lık bir dosya aynı disk içinde anında taşınır. Farklı bir diske ya da bölüme taşırken ise mecburen kopyalayıp kaynağı siler; o durumda süre dosya boyutuyla orantılıdır.
  • rsync veya scp ile uzak sunucular, sanal makineler veya kendi ağınızdaki bilgisayarlar arasında dosya ve dizin kopyalayabilirsiniz. Büyük dizinlerde rsync tercih edilir: yarıda kalan aktarımı kaldığı yerden sürdürür ve yalnızca değişen dosyaları gönderir.

Sonuç

Dosya oluşturma ve kopyalama komutlarının tamamı üç davranışa dayanır:

  • touch bir zaman damgası komutudur. Boş dosya oluşturması yan etkisidir; var olan dosyanın içeriğine asla dokunmaz.
  • > sıfırlar, >> ekler. Bir günlük dosyasına > ile yazmak, o ana kadarki tüm kaydı tek seferde siler.
  • cp dizin için -r ister ve üzerine yazarken sormaz. mv ise aynı dosya sistemi içinde veri taşımaz, yalnızca adı değiştirir.
  • cp -r‘ın sonucu hedefin var olup olmamasına bağlıdır. Aynı komut ilk çalıştırmada kopyayı üretir, ikincide kopyayı kopyanın içine koyar.

Yol haritasında sırada dosyaların içine bakmak var: Dosya İçeriğini Görüntüleme (cat, less, tail, head). Serinin tamamına GNU/Linux Öğrenme Yolculuğu sayfasından ulaşabilirsiniz.

Paylaş :

İlgili Yazılar

Mutlak Yol ve Bağıl Yol Kavramları

Mutlak Yol ve Bağıl Yol Kavramları

Bir önceki yazıda kabuktaki ilk komutları çalıştırdık ve listenin en başına pwd‘yi koyduk. O komutu neden bu kadar öne aldığımızı burada açıklıyoruz.

Subnet Calculator

Subnet Calculator

Subnet, büyük bir IP ağını daha küçük, daha yönetilebilir parçalara bölen bir yapıdır. Alt ağlar, ağ trafiğini daha iyi yönetmek, güvenliği artırmak ve kaynakları daha verimli kullanmak için kullanılır. Her alt ağ, kendi benzersiz IP adres aralığına ve alt ağ maskesine sahip olabilir. Subnetler, ağdaki cihazların birbirleriyle doğrudan iletişim kurabilmeleri ve aynı alt ağda bulunan diğer cihazlara erişebilmeleri için bir köprü görevi görür. Alt ağlar, bir ağı daha küçük, daha ölçeklenebilir ve daha organize bir yapıya dönüştürerek ağ yöneticilerine daha fazla kontrol ve esneklik sağlar.

HomeLab Deneyimi

HomeLab Deneyimi

Bu fikir ‘Hardware Haven’ youtube kanalını izlerken aklıma geldi. Evimizde bir bilgisayarı alıp sunucu şekline getirmek. Tabi daha bir çok içeriği de gene internetten ‘homelab tour’ yazarak daha fazla içeriğe ulaşabilirsiniz çok harika fikirler var. Fiziksel olarak kendi evimde server, nas, firewall ve Backbone(omurga) switch gibi teçhizatlar yok ve almak sanırım Türkiye şartlarında çok pahalıya gelir tabi elektrik faturası da cabası.