Linux Dosya Oluşturma ve Kopyalama Komutları: Dosyalarınızı Yönetmek
- Murat Akpınar
- Linux öğrenme yolculuğu
- 31 Ağustos 2023
İç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 Komutları
touch Komutu: Yeni bir dosya oluşturmak için “touch” komutunu kullanabilirsiniz. Örneğin:
touch yeni_dosya
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.
echo Komutu: Metin içeriği ile dolu bir dosya oluşturmak için “echo” komutunu kullanabilirsiniz. Örneğin:
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
Dosya Kopyalama Komutları
cp Komutu: Dosyaları kopyalamak için “cp” komutunu kullanabilirsiniz. Örneğin, “dosya.txt” dosyasını “yedek_dosya.txt” olarak kopyalamak için;
cp dosya yedek_dosya
Dizin kopyalarken -r zorunludur. cp tek başına yalnızca dosya kopyalar; bir dizini hedef alırsanız cp: -r not specified; omitting directory 'proje' hatası verir:
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'?
Dosya Yönetiminde Pratik Bilgiler
- Dosya ve dizin adları BÜYÜK-küçük harf duyarlılığına göre farklılık gösterir. “dosya” ve “Dosya” iki farklı dosyayı temsil eder.
- “cp” kaynağı yerinde bırakır, “mv” bırakmaz. Aradaki fark yalnızca kaynağın silinmesi de değildir:
mvaynı 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” gibi komutlarla uzak sunucular, sanal makineler veya kendi ağınızdaki bilgisayarlar arasında dosya ve dizin kopyalayabilirsiniz. Büyük dizinlerde
rsynctercih 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:
touchbir 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.cpdizin için-rister ve üzerine yazarken sormaz.mvise aynı dosya sistemi içinde veri taşımaz, yalnızca adı değiştirir.
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.