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.

AA

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 konsol

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.

SCP

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