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.
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
Kullandığımız güncel droplet image listemize bie göz atmak istersek; doctl compute 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/
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.
- wp db export. WP-CLI Commands ↩
- Example syntax for Secure Copy (scp). Hypexr ↩
- Marko Mudrinić. (2019). How To Use Doctl, the Official DigitalOcean Command-Line Client. DigitalOcean Community ↩
- Pungki Arianto. (2015). 10 SCP Commands to Transfer Files/Folders in Linux. TecMint ↩
- Downloading Folders to my Local via SSH. SuperUser ↩
- How do I copy a folder from remote to local using scp? [closed]. StackOverflow ↩
- cp - copy files and directories. LinuxCommand ↩
- Vivek Gite. (2019). Linux – How To Copy a Folder - Command Line Option. nixCraft ↩
- How do I determine the total size of a directory (folder) from the command line?. Ask Ubuntu ↩
- Optimizing jpeg Image Files on Linux ↩
- julianxhokaxhiu/pagespeed_optimize_images.sh. GitHub ↩