SSH ile Linux Sunucular Arası Dosya Transferi
Linux tabanlı sunucular arasında dosya ve dizin transferi, sistem yöneticileri ve geliştiriciler için günlük operasyonların vazgeçilmez bir parçasıdır. Bu işlem, bir sunucudaki verilerin başka bir sunucuya güvenli ve etkili bir şekilde taşınmasını sağlar. Özellikle yedekleme, sunucu taşıma veya uygulama dağıtımı gibi senaryolarda bu tür transferler kritik öneme sahiptir. Bu makalede, Linux sunucular arası dosya transferi için en yaygın ve güvenli yöntemlerden biri olan SCP (Secure Copy Protocol) komutunu detaylı bir şekilde inceleyeceğiz. SCP, SSH (Secure Shell) protokolü üzerinden çalıştığı için aktarılan tüm veriler şifrelenir, böylece ağ üzerindeki olası güvenlik riskleri minimize edilmiş olur.
Linux Sunucular Arası Dosya Transferinin Önemi
Sunucu ortamlarında veri hareketliliği, modern IT altyapılarının temelini oluşturur. Bir web sitesini yeni bir sunucuya taşırken, veritabanı yedeklerini farklı bir depolama sunucusuna aktarırken veya bir uygulamanın güncel sürümünü birden fazla üretim sunucusuna dağıtırken, hızlı ve güvenli dosya transferi kaçınılmazdır. Yanlış veya güvensiz yöntemler kullanmak, veri kaybına, güvenlik ihlallerine veya operasyonel kesintilere yol açabilir. Bu nedenle, Linux sistemlerde dosya transferini doğru araçlarla, bilinçli bir şekilde yapmak büyük önem taşır. SCP, bu ihtiyacı karşılamak için tasarlanmış, basit ama güçlü bir araçtır.
SCP Komutu ile Güvenli Dosya Aktarımı
SCP, SSH protokolünü kullanarak uzak hostlar arasında veya uzak host ile yerel host arasında dosya kopyalamak için kullanılan bir komut satırı aracıdır. SCP’nin en büyük avantajı, SSH’ın sağladığı kimlik doğrulama ve şifreleme özelliklerini devralmasıdır. Bu sayede, transfer edilen veriler ağ dinlemesi gibi tehditlere karşı korunur. SCP, hem tekil dosyaları hem de dizinlerin tamamını özyinelemeli olarak kopyalama yeteneğine sahiptir.
SCP Komutunun Yapısı ve Parametreleri
Genel olarak, SCP komutunun sözdizimi şu şekildedir:
scp [seçenekler] [kaynak] [hedef]Burada [seçenekler], transferin davranışını değiştiren parametreleri (örneğin, port belirtme, özyinelemeli kopyalama), [kaynak] kopyalanacak dosya veya dizinin yolunu ve [hedef] ise dosyanın nereye kopyalanacağını belirtir. Kaynak veya hedef bir uzak sunucu ise, bu sunucunun kullanıcı adı ve IP adresi belirtilmelidir.
Kaynak Tanımlama: Uzak Sunucudan Yerel Sunucuya
Eğer bir dosyayı uzak bir sunucudan kendi yerel sunucunuza çekmek istiyorsanız, kaynak olarak uzak sunucuyu, hedef olarak ise yerel dizininizi belirtmeniz gerekir. Kaynak sunucu formatı kullanici_adi@uzak_ip:/uzak/dizin/dosya_adi şeklindedir.
Hedef Tanımlama: Yerel Sunucudan Uzak Sunucuya
Yerel sunucunuzdaki bir dosyayı uzak bir sunucuya göndermek için ise, kaynak olarak yerel dosyanızı, hedef olarak uzak sunucuyu belirtirsiniz. Hedef sunucu formatı da aynı şekilde kullanici_adi@uzak_ip:/uzak/dizin/ şeklindedir.
Uzak Sunucudan Uzak Sunucuya Transfer
SCP, doğrudan iki uzak sunucu arasında da dosya transferi yapabilir. Bu durumda, hem kaynak hem de hedef birer uzak sunucu olarak belirtilir. Bu işlem genellikle dosya transferini başlatan ana sunucunun (genellikle yerel makineniz) üzerinden gerçekleşir, yani veri ana makineye çekilip sonra hedef sunucuya gönderilir. Ancak bazı durumlarda, SCP komutu doğrudan iki uzak sunucu arasında da bir köprü kurarak transferi gerçekleştirebilir.
Sık Kullanılan SCP Seçenekleri
-P port: Uzak sunucunun SSH bağlantısı için kullandığı port numarasını belirtir. Varsayılan port 22’dir. Eğer uzak sunucu farklı bir port kullanıyorsa, bu seçenekle belirtilmelidir. Örneğin,-P2222.-r: (recursive) Dizinleri ve içeriklerini özyinelemeli olarak kopyalar. Bir klasörü ve içindeki tüm dosya/alt klasörleri kopyalamak için bu seçenek zorunludur.-v: (verbose) Ayrıntılı çıktı sağlar. Transfer sırasında neler olup bittiğini görmek veya hata ayıklamak için kullanışlıdır.-C: (compression) Veri sıkıştırmayı etkinleştirir. Düşük bant genişliğine sahip ağlarda transfer hızını artırabilir.-p: (preserve) Kaynak dosyanın değiştirilme zamanlarını, erişim zamanlarını ve modlarını (izinlerini) korur.-q: (quiet) İlerleme çubuğunu ve hata mesajlarını gizler.
Pratik SCP Kullanım Senaryoları
Şimdi, örneklerle SCP komutunun nasıl kullanıldığını daha iyi anlayalım.
Tek Bir Dosyayı Uzak Sunucudan Çekme
Senaryomuzda, 10.10.10.1 IP adresine sahip eski sunucumuzdan, /home/cpmove-yedek.tar.gz adlı yedek dosyasını yeni sunucumuzdaki /home/yedek klasörünün altına çekmek istiyoruz. Bu durumda, yeni sunucunun SSH’ı üzerinden aşağıdaki komutu çalıştırmalıyız:
scp -P22 [email protected]:/home/cpmove-yedek.tar.gz /home/yedekBu komut, 10.10.10.1 adresindeki sunucunun 22 numaralı SSH portunu kullanarak root kullanıcısı ile bağlanır ve belirtilen yedek dosyasını yerel sunucunun /home/yedek dizinine kopyalar. Eğer uzak sunucunun SSH portu 22 dışında bir port olsaydı (örneğin 2222), -P2222 şeklinde belirtmemiz gerekirdi.
Bir Klasörü Uzak Sunucudan Kopyalama
Tüm bir dizini (örneğin bir web sitesinin dosyalarını içeren /var/www/html klasörünü) uzak sunucudan yerel sunucuya kopyalamak için -r (recursive) seçeneğini kullanırız:
scp -r [email protected]:/var/www/html /home/yedek_klasorBu komut, uzak sunucudaki /var/www/html dizinini ve tüm içeriğini (alt dizinler ve dosyalar dahil) yerel sunucudaki /home/yedek_klasor dizinine kopyalar.
Yerel Sunucudan Uzak Sunucuya Dosya Gönderme
Kendi sunucunuzdaki /home/yerel_dosya.zip dosyasını, 20.20.20.2 IP adresli başka bir sunucunun /opt/yedekler dizinine göndermek isterseniz:
scp /home/yerel_dosya.zip [email protected]:/opt/yedeklerBu komut, yerel dosyanızı belirtilen uzak sunucuya güvenli bir şekilde aktarır.
SCP ile Transfer Yaparken Dikkat Edilmesi Gerekenler
- Erişim İzinleri: Hem kaynak hem de hedef sunucuda, transferi gerçekleştiren kullanıcının gerekli okuma/yazma izinlerine sahip olduğundan emin olun. Aksi takdirde, transfer başarısız olacaktır.
- Ağ Bağlantısı ve Hız: Büyük dosyalar transfer ederken stabil bir ağ bağlantısı ve yeterli bant genişliği önemlidir. Bağlantı kesintileri transferin yarıda kalmasına neden olabilir.
- Güvenlik: SSH anahtar tabanlı kimlik doğrulama kullanmak, parola tabanlı kimlik doğrulamadan daha güvenlidir. Mümkünse SSH anahtarları kullanmayı tercih edin.
- Büyük Dosya Transferleri: Çok büyük dosyalarda (birkaç GB’tan fazla)
rsyncgibi araçlar, kesintiye uğrayan transferleri kaldığı yerden devam ettirme yeteneği sayesinde daha verimli olabilir. SCP, küçük ve orta boyutlu transferler için oldukça idealdir. - Hedef Dizinin Mevcudiyeti: Kopyalanacak dizinin hedef sunucuda mevcut olduğundan emin olun. SCP, hedef dizini otomatik olarak oluşturmaz (yalnızca dosya isimlerini değiştirebilir). Eğer hedef bir dizinse, var olması gerekir.
Alternatif Dosya Transfer Yöntemleri (Kısaca)
SCP yaygın olarak kullanılsa da, başka alternatifler de mevcuttur:
- Rsync: Özellikle büyük dosya ve dizinlerin sık ve artımlı olarak senkronize edilmesi gereken durumlar için tasarlanmıştır. Yalnızca değişen kısımları transfer ederek bant genişliğinden tasarruf sağlar.
- SFTP (SSH File Transfer Protocol): Bir FTP istemcisine benzer şekilde çalışır ancak SSH üzerinden güvenli transfer sağlar. Grafik arayüzlü istemcilerle (örneğin FileZilla) daha kullanıcı dostu bir deneyim sunar.
- FTP (File Transfer Protocol): Güvenli olmayan bir protokoldür. Verileri şifrelemeden aktardığı için hassas veriler için önerilmez. Genellikle anonim veya herkese açık dosya paylaşımları için kullanılır.
SCP Seçenekleri Tablosu
Aşağıdaki tablo, sık kullanılan SCP seçeneklerini ve açıklamalarını özetlemektedir:
| Seçenek | Açıklama |
|---|---|
-P port | Uzak sunucunun SSH portunu belirtir (büyük P harfi). |
-r | Dizinleri ve içeriklerini özyinelemeli olarak kopyalar. |
-v | Ayrıntılı çıktı gösterir (hata ayıklama için faydalıdır). |
-C | Veri sıkıştırmayı etkinleştirir (düşük bant genişliği için). |
-p | Dosyanın değiştirilme zamanlarını ve modlarını korur. |
-q | İlerleme çubuğunu ve hata mesajlarını gizler. |
-l limit | Kullanılacak bant genişliğini kilobit/saniye cinsinden sınırlar. |
-B | Parti modunu etkinleştirir (parola istemini engeller). |
Linux sunucular arası dosya transferi, doğru araç ve yöntemlerle yapıldığında oldukça basit ve güvenli bir işlemdir. SCP komutu, sunduğu basitlik ve SSH’ın sağladığı güvenlik sayesinde bu tür operasyonlar için ideal bir çözüm sunar. Yukarıdaki detaylı bilgiler ve örnekler sayesinde, sunucularınız arasında güvenli ve verimli bir şekilde dosya transferi yapabilir, operasyonel süreçlerinizi daha sorunsuz hale getirebilirsiniz. Unutmayın, her zaman doğru izinleri ve hedef yolları kontrol etmek, olası hataların önüne geçecektir.

