SFTP ve SCP Kullanımı
Uzak sunucu üzerinde WordPress işlemlerinde faydalanmak üzere bu yazıda uzak sunucu ile bilgisayar ve sunucular arasında dosya alışverişi işlemlerinden bahseceğim.
Konu bağlamı elbette yine SSH ile devam etmekte ve örneklendirmeler DigitalOcean üzerinden sürdürülmekte. Amacım ilişkisi olabilecek farklı sorunları/çözüm yollarına da tek bir örnek altında değinebilmek. Konu kapsamını genişletmek, farklı sorunlara karşı çözüm önerileri geliştirebilmek adına yorum bölümünden katkı sağlayabilirsiniz. O halde vakit kaybetmeden başlayalım.
SFTP Kullanımı
Güvenli Dosya Taşıma Protokolü (SFTP), SSH vasıtasıyla dosya transferine olanak sağlayan bir dosya aktarım protokolüdür. Dosya Transfer Protokolü (FTP)’nden farklı olarak SFTP, Secure SHELL (SSH)’in sunduğu güvenli yapı ile işlemektedir. Elbette bu güvenli işlemlerin gerçekleştirilebilmesi için SFTP istemcisi gerekmektedir. Bir çok Linux dağıtımı ön tanımlı olarak (OpenSSH > Remote operations1) SFTP istemcisi barındırmaktadır2. Farklı işletim sistemlerinde de kullanılabilecek bir çok alternatif bulunmaktadır. Sunucudan sunucuya (istemciden sunucuya) sağlanan güvenli yapı sayesinde güvensiz ağlarda da dosya transferleri güvenli şekilde gerçekleştirilebilir. İşlemlerin güvenli şekilde gerçekleştirilmesine ek olarak sunucu üzerinde gerçekleştirilen tüm işlemlerin kolayca fark edilebilmesine yönelik olarak log (kayıt) da tutuluyor. Özetlemek gerekirse, SFTP, FTP’den farklı olarak, birden fazla dosya transfer işlemi, aktivite kaydı, temel dizin işlemleri (oluşturma, listeleme vb.), sunucu üzerinde dosya erişimi düzenleme ve uzak sunucular arasında dosya işlemleri yürütme gibi avantajlar sunan bir dosya transfer protokolüdür.
SFTP Portu
SFTP ön tanımlı olarak SSH ile aynı port (22) üzerinden işlemler yürütmektedir.
SFTP İşlemleri
Komut satırı üzerinden sunucular arası işlemler kolaylıkla gerçekleştirilebilmektedir. Bir diğer kullanım yöntemi olarak da FileZilla, WinSCP, SmartFTP, CoreFTP gibi SFTP desteği sunan FTP istemcileri gösterilebilir. Tabi bu tür kullanımlarda FTP’den farklı olarak, anahtar yolunun gösterilmesi gerekmektedir. Elbette işlemlerde terminal üzerinden ilerleyeceğim. Buna istinaden, örneklendirme aşamasında sunucular arasında veri taşıma işleminde de sıklıkla konusu geçecek olan birkaç komutu aşağıda iletiyorum. Ekstra not olarak, sftp çoğunlukla tek dosya üzerinden işlemler yürütmekte3. Örneğin non-empty
klasörlerde silme işlemi için önce rm *
ile dosyaları silmeniz gerekiyor ya da local olarak rm
ve rmdir
komutlarını kullanamıyorsunuz4.
O halde, adım adım birkaç işlem gerçekleştirelim5. Senaryo olarak bilgisayarımdaki bir fotoğraf albümünü (klasör) sunucuya taşıyacağım. Öncelikle sunucuda SFTP oturumumuzu başlatalım (sunucularda daha öncesinde açık anahtar kaydı yapıldı).
SFTP kullanici-adi@sunucu-ip-veya-domain-adresi
Bağlantının sağlanmasının ardından sunucuda /backup
adında bir klasör oluşturup, bilgisayarımın masaüstünde yer alan /album
klasör içeriğini /backup
klasörü içerisine yükleyeceğim. Bu işlem için put
komutunu kullanacağım. -r
kopyalanacak olan yolun bir klasöre ait olduğunu belirtmekte.
mkdir backup
cd backup
put -r /Users/kullanici-adi/Desktop/album
Diyelim ki, klasör dışında bir dosyayı da /album
içerisine yüklemek istiyoruz.
put /Users/kullanici-adi/Desktop/imaj.png /root/backup/album
Peki, görsellerimizi optimize ettik ve bilgisayarımıza indirmek istiyoruz. O halde işlemlerimizi get
ile devam ettireceğiz. Önce lpwd
ile bilgisayarımızda hangi dizinde olduğumuza bir bakalım ve ardından dosyaları listeleyelim. Her şey yolunda ise get
ile dosyalarımızı indirelim ve klasör adını album2
olarak değiştirelim.
lpwd
lls -l
get -r album /Users/kullanici-adi/Desktop
Son olarak /album
klasörü içeriğini listeleyelim ve SFTP’den çıkalım.
lcd /Users/kullanici-adi/Desktop/album
exit
SCP Kullanımı
SSH ile dosya transferi işlemlerinde, SFTP’ye alternatif olarak kullanılabilecek bir diğer seçenek de Güvenli Kopyalama Protokolü (SCP)6. Temel olarak, bir ağdaki iki bilgisayar arasında dosya kopyalama işlemi yapmayı sağlar. Bağlantı süresince işlemler yine şifreli olarak aktarılır. Kullanımı cp
ile benzerlik gösterir. Komut girildikten sonra bağlantı sağlanır, dosya kopyalanır ve bağlantı sonlandırılır ve bu işlemleri 3 biçimde gerçekleştirebilir;
- Uzak sunucudan bilgisayara,
- Bilgisayardan uzak sunucuya,
- Uzak sunucudan uzak sunucuya.
O halde SFTP örneği üzerinden devam edip, ardından sunucular arasında dosya işlemleriyle örneklendirmeyi sonlandıralım.
Bu defa SFTP’de olduğu gibi bir oturum başlatmamıza gerek yok. İçerisinde bir çok görsel barındıran /yeni
klasörümüzdeki görselleri sunucumuzda /backup
altındaki album
klasörü içerisine kopyalayalım.
scp -r /Users/kullanici-adi/Desktop/yeni kullanici-adi@sunucu-ip-veya-domain-adresi:/root/backup/album
Klasör içerisindeki görselleri optimize ettiğimizi varsayalım ve tekrar bilgisayarımıza indirelim.
scp -r kullanici-adi@sunucu-ip-veya-domain-adresi:/root/backup/album /Users/kullanici-adi/Desktop/yeni
Peki, wordpress kurulumumuz ile ilgili örnekte bahsi geçen, klasör içeriğinin tamamen bir başka sunucuya aktarımı ve ardından tekrar güncel halinin edinimini nasıl yapacağız?
scp -r kullanici-adi@sunucu-ip-veya-domain-adresi:/root/backup/album kullanici-adi@sunucu-ip-veya-domain-adresi:/root/backup/album/yeni
Server işlemleri oldukça pratik değil mi?7 Konu server olmuşken port konusuna da değinmek gerekir8. SCP ile SFTP farklılıklarından biri port seçiminde karşımıza çıkıyor9. scp
temel olarak cp
komutunu alıyor. cp
komutu -p
ile port belirtmemize imkan veriyor.
scp -P 22 kullanici-adi@sunucu-ip-veya-domain-adresi:/root/backup/album /Users/kullanici-adi/Desktop/yeni
- Open SSH ↩
- OpenSSH/Cookbook/File Transfer with SFTP. WikiBooks ↩
- Chapter 4. SSH (secure) file transfer (SFTP) ↩
- Command-Line SFTP Client. Bitvise ↩
- Narad Shrestha. (2016). 10 sFTP Command Examples to Transfer Files on Remote Servers in Linux. TecMint ↩
- Hayden James. (2020). SCP Linux – Securely Copy Files Using SCP examples ↩
- Anthony James. (2012). SSH and SCP: Howto, tips & tricks ↩
- Shoop: "mosh for scp" - a faster secure file transfer tool written in Rust (alpha). reddit ↩
- İsmail Can Coşkuner. (2007). SFTP ve SCP Kullanımı. e-bergi ↩