Uzak Sunucular Arasında Klasör İşlemleri

SFTP ve SCP kullanımı ile ilgili yazının ardından bu başlık altında uzak sunucular arasında dosya transferiyle ilgili olarak biraz daha detay verecek ve birkaç konuyu bir arada örneklendireceğim.

AA

Durum senaryosu olarak, paylaşımlı host alanında bulunan bir WordPress kurulumunu olduğu gibi DigitalOcean sunucumuza taşıyacağız. DigitalOcean sunucu işlemleri için doctl kullanacak, yapılandırma için one-click app seçeneklerinden WordPress imajını aktifleştireceğim.

Erişim sağlanacak paylaşımlı hosting alanı ve bilgisayar arasında, DigitalOcean ile bilgisayar arasında ssh açık anahtarları tanımlı. Örnek olması açısından, paylaşımlı hosting ile DigitalOcean sunucusu arasında yeni bir tanımlama oluşturacağım.

Uzak Sunucular Arasında Klasör İşlemleri

Öncelikle doctl üzerinden tanımlı açık anahtarlara ait fingerprint değerlerlerine sonraki dropletlerle ilişkilendirme yaparken ihtiyaç duyacağız.

doctl compute ssh-key list
Doctl

Kullandığımız güncel droplet image listemize bie göz atmak istersek; doctl compute image list

Droplet image list

Her şey yolunda. O halde, droplet listemizi alalım.

doctl compute droplet list

Güncel liste içerisinden erişim sağlamak istediğimiz droplete ait id değerini ssh bağlantımızda kullanacağız.

doctl compute ssh [droplet_id]

Komut sonrasında SSH erişimimiz sağlanmış olacak. Bu akışa ek olarak, ben yeni bir wordpress kurulu yeni bir droplet oluşturup taşıma işleminde kullanacağım. O halde seçenekleri listeleyelim.

doctl compute image list --public

Tüm liste yerine sadece wordpress ile ilgili olanı almak istersem;

doctl compute image list --public | grep wordpress

Droplet oluşturmak için kullanacağım slug değerinin wordpress-16-04 olduğu bilgisiyle sunucu oluşturma isteğimizi, ssh-key ile doğrudan bilgisayarıma ait açık anahtar tanımlı olarak kurulum iletiyorum. Yeni bir açık anahtar tanımlama işlemini paylaşımlı hosting üzerinden aşağıda açıkladım.

doctl compute droplet create wpdroplet --size 1gb --image wordpress-16-04 --region nyc1 --ssh-keys 4d:23:e6:e4:8a:17:d2:cf:89:47:36:b5:c7:33:40:4e

İsteğimin onaylandığına ve dropletin oluşturulduğuna dair aldığım bildirimle birlikte ilgili droplete SSH erişimimi başlatıyorum.

doctl compute ssh [droplet_id]

Bir diğer aşamaya geçebiliriz. Droplet üzerinden paylaşımlı hosting alanına SSH bağlantısı sağlayıp veritabanını kopyasını çekelim. Veritabanı bilgilerini wp-config.php dosyasından kopyalayabileceğiniz gibi sunucuda wp-cli kurulu ise wp db export komutundan da faydalanabilirsiniz1.

mysqldump -u [mysql-kullanici-adi] -p [kopyalanacak-veritabani] > [yedek-sql-dosyasi-adi].sql

Bu komutla birlikte /root altında [yedek-sql-dosyasi-adi].sql dosyasını oluşturdum. Yazının başında da belirttiğim gibi açık anahtar kaydını iki nokta arasında sağlamamıştım. Şimdi paylaşımlı hosting alanına ait açık anahtarı görüntüleyelim. ssh-keygen ile anahtarımızı oluşturalım ve scp işlemine geçelim2.

Sunucularda doctl kuruluysa aşağıdaki komutlarla kolaylıkla SSH işlemlerini gerçekleştirebilirsiniz3.

doctl compute ssh-key create [anahtar-adi] --public-key "public_key"
doctl compute ssh-key import [anahtar-adi] --public-key-file ~/.ssh/id_rsa.pub
doctl compute ssh-key update [anahtar-id] --key-name [anahtar-adi]

spc ile artık klasör içeriğini, hem SQL yedeğimiz hem de diğer dosyalarımızla birlikte olduğu gibi aktarmaya başlayabiliriz 4 5 6.

scp -r ~/public_html/../wp-content/ kullanici-adi@dosyalari-kopyalayacagimiz-sunucu:/var/www/html/

scp komutu cp ile benzerlik taşımaktadır 7 8.

cp -avr /uploads /uploads_backup

MySQL yedeğimizi oluşturduğumuz veritabanına import edelim. mysql -u [veritabani-kullanici-adi] -p [veritabani-adi] < [yedek-sql-dosyasi-adi].sql wp-config.php bilgilerine göre (kullanıcı adı, şifre, yetkilendirme) MySQL veritabanı sunucumuzu yapılandırdığımıza ve veritabanımızı import ettiğimize göre sürecimiz tamamlandı.

Son bir ekleme olarak, /uploads klasörü içeriğindeki imajlarımızı da optimize edelim. Önce klasör boyutuna bakalım 9 10.

du -hs uploads

Klasörün boyutu 829 MB görünüyor. Optimizasyonu başlattıktan sonra tekrar kontrol ederek ne kadarlık alan kazandığımızı karşılaştırabiliriz11.

find . -name '*.jpg' | xargs jpegoptim --strip-all

Evet, görsellerin optimizasyonu da tamamlandıktan sonra, tekrar klasör boyutuna baktığımızda 776 MB ile ekstra 53 MB’lık bir alana sahip olduğumu gördüm.