WordPress taşıma işlemlerinde en sık yaşanan sorunlardan biri, XML dosyası içe aktarılırken yazıların gelmesi fakat resimlerin eksik kalmasıdır. Özellikle büyük sitelerde, medya dosyalarının uzaktan çekilmesi sırasında zaman aşımı, geçici dizin doluluğu veya bağlantı sorunları ortaya çıkabilir. Bu tür durumlarda işlemi panel üzerinden zorlamak yerine SSH, tmux ve WP-CLI ile ilerlemek daha sağlam bir yöntemdir.
Bu örnekte kaynak ve hedef yapı için datweb.com.tr alan adı kullanılacaktır. Mantık değişmez. Sadece kullanıcı adı, dosya adı ve alan adı sizin sunucunuza göre değiştirilir.
XML içe aktarma mantığı nasıl çalışır?
WordPress XML dosyası yazıları, kategorileri, etiketleri, yorumları ve medya bağlantılarını taşır. Ancak resim dosyalarının kendisini dosyanın içine gömmez. Yani import sırasında hedef site, eski sitedeki görselleri bağlantı üzerinden yeniden indirmeye çalışır. Sorun da tam burada çıkar. Eski siteden resim çekme aşaması başarısız olursa yazılar gelir ama görseller eksik kalır.
İşe başlamadan önce geçici dosyaları temizlemek
Bazı sunucularda /tmp dizini doluysa import işlemi sırasında geçici dosyalar oluşturulamaz ve medya çekimi aksar. Sunucuda kritik başka işlem yoksa eski geçici dosyaları temizlemek faydalı olabilir.
find /tmp -xdev -type f -name "*.tmp" -mmin +30 -delete
Bu komut, /tmp altında otuz dakikadan eski .tmp dosyalarını temizler.
WordPress kullanıcısına geçiş yapmak
İşlemi root ile değil, ilgili hosting kullanıcısıyla yapmak daha düzgündür. Bu örnekte kullanıcı adı datwebcomtr olarak düşünülmüştür.
su - datwebcomtr
Ardından WordPress kurulum dizinine geçilir.
cd ~/public_html
Doğru dizinde olduğunuzu kontrol etmek için şu komut da kullanılabilir:
pwd
Uzun sürecek işlemler için tmux kullanmak
XML içe aktarma bazen uzun sürer. SSH bağlantısı kopsa bile işlemin devam etmesi için tmux kullanmak gerekir. Önce mevcut oturumlara bakılır.
tmux ls
Eğer daha önce açılmış bir oturum varsa ona bağlanabilirsiniz.
tmux attach -t wpimport
Yeni bir oturum oluşturmak isterseniz aşağıdaki komut yeterlidir.
tmux new -s wpimport
Bu komutla wpimport adlı yeni bir tmux oturumu açılır. Bundan sonra işlemleri bu ekran içinde çalıştırmanız daha güvenlidir.
XML dosyasının doğru yerde olduğunu kontrol etmek
İçe aktarılacak XML dosyası public_html içine yüklenmiş olmalıdır. Örnek dosya adı datweb.xml olarak düşünelim. Kontrol için şu komut kullanılır:
ls -lh datweb.xml
Eğer dosya görünüyorsa import aşamasına geçilebilir.
WP-CLI ile XML içe aktarma
Temel import komutu aşağıdaki gibidir:
wp import datweb.xml --authors=create
Bu komut, XML dosyasındaki yazıları, içerikleri ve yazar bilgilerini içe aktarmaya çalışır. Eğer XML içindeki yazarlar hedef sitede yoksa sistem onları oluşturmaya dener.
Bazen bazı sunucularda import komutu yüklü olmayabilir. Böyle bir durumda önce import paketi kurulmalıdır.
wp package install wp-cli/import-command
Kurulum tamamlandıktan sonra import komutu yeniden çalıştırılır.
wp import datweb.xml --authors=create
Bellek sınırı nedeniyle hata alınırsa
XML büyükse veya sunucu PHP bellek sınırı düşükse komut başarısız olabilir. Böyle bir durumda komutu daha yüksek bellek limitiyle çalıştırmak mümkündür.
php -d memory_limit=512M $(which wp) import datweb.xml --authors=create
Resimler neden gelmeyebilir?
Resimlerin gelmemesinin temel sebebi, hedef sitenin kaynak sitedeki medya dosyalarına HTTP üzerinden erişip onları indirememesidir. Bunun nedeni zaman aşımı, güvenlik duvarı, mod_security, Cloudflare, SSL problemi veya kaynak sunucudaki erişim engeli olabilir. Önce doğrudan görsel bağlantısına erişim testi yapmak gerekir.
curl -I https://datweb.com.tr/wp-content/uploads/2026/03/ornek-resim.jpg
Bu komutta 200 OK yanıtı geliyorsa bağlantı tarafı büyük ölçüde çalışıyor demektir. 403, 406, 429 veya 503 gibi bir cevap dönüyorsa WordPress de aynı görseli çekmekte zorlanacaktır.
Disk ve geçici alan kontrolü
Import sırasında resimler yine gelmiyorsa sunucunun disk ve inode durumuna da bakılmalıdır.
df -h
df -i
du -sh /tmp
Disk doluysa veya inode sınırı aşılmışsa medya dosyaları indirilemez.
PHP modüllerini kontrol etmek
WordPress uzaktan dosya çekerken veya görsel işlerken curl, gd ya da imagick gibi bileşenlere ihtiyaç duyabilir. Sunucuda bunların durumunu görmek için şu komutlar kullanılabilir:
php -m | egrep 'curl|imagick|gd'
php -r 'echo "allow_url_fopen=".ini_get("allow_url_fopen").PHP_EOL;'
php -r 'echo "memory_limit=".ini_get("memory_limit").PHP_EOL;'
En sağlam yöntem: uploads klasörünü doğrudan taşımak
Açık konuşmak gerekirse büyük sitelerde WordPress’in resimleri XML üzerinden tek tek çekmesini beklemek çoğu zaman gereksiz risk oluşturur. En temiz yöntem, yazıları XML ile almak ve resimleri doğrudan wp-content/uploads klasöründen taşımaktır.
Eğer sadece belirli bir ayın içeriğini alıyorsanız, örneğin Ocak 2026 yazıları taşınıyorsa, kaynak siteden şu klasör alınır:
/wp-content/uploads/2026/01/
Ardından hedef sitede aynı klasöre çıkarılır:
/home/datwebcomtr/public_html/wp-content/uploads/2026/01/
Bu işlem cPanel üzerinden zip alıp aynı ay klasörüne çıkartılarak da yapılabilir. Buradaki önemli nokta klasör yapısının bozulmamasıdır. Dosyalar yanlışlıkla iç içe klasör oluşturursa yazılar resimleri bulamaz.
SSH erişimi varsa rsync ile taşıma
Kaynak sunucuya SSH erişiminiz varsa, uploads klasörünü doğrudan kopyalamak çok daha temiz olur.
cd ~/public_html
rsync -avz --progress KAYNAK_KULLANICI@KAYNAK_IP:/home/KAYNAK_KULLANICI/public_html/wp-content/uploads/ ./wp-content/uploads/
Taşıma tamamlandıktan sonra dosya izinleri düzenlenebilir.
find ~/public_html/wp-content/uploads -type d -exec chmod 755 {} \;
find ~/public_html/wp-content/uploads -type f -exec chmod 644 {} \;
SSH erişimi yoksa wget ile çekmek
Eğer kaynak sunucuya SSH yoksa ama medya dosyaları web üzerinden açıksa, uploads klasörünü wget ile almaya çalışabilirsiniz.
cd ~/public_html/wp-content/uploads
wget -r -np -nH --cut-dirs=2 -R "index.html*" https://datweb.com.tr/wp-content/uploads/
Bu yöntem büyük klasörlerde yavaş olabilir ama bazı durumlarda iş görür.
Alan adı değiştiyse URL düzeltmek
Site eski alan adından yeni alan adına taşındıysa içeriklerdeki görsel bağlantılarını da güncellemek gerekir. Örneğin datweb.com.tr adresinden yeni bir adrese geçildiyse aşağıdaki komut kullanılabilir:
wp search-replace 'https://datweb.com.tr' 'https://yenidatweb.com.tr' --skip-columns=guid
Eğer alan adı değişmediyse bu adıma gerek yoktur.
Medya boyutlarını yeniden üretmek
Uploads klasörünü doğru yere attıktan sonra küçük resim boyutlarını yeniden üretmek için aşağıdaki komut kullanılabilir:
wp media regenerate --yes
Bu komut hedef sitede, yani WordPress kurulumunun bulunduğu public_html dizininde çalıştırılmalıdır.
su - datwebcomtr
cd ~/public_html
wp media regenerate --yes
Burada önemli bir ayrıntı vardır. Bu komut dışarıdan resim indirmez. Sadece WordPress içinde mevcut medya kayıtları için küçük boyutlar üretir. Yani fiziksel dosyalar uploads içine atılmadan bu komuttan mucize beklemek doğru değildir.
tmux oturumundan çıkmadan işlemi arka plana almak
İçe aktarma veya regenerate işlemi uzun sürüyorsa tmux ekranını kapatmadan işlemi arka planda bırakabilirsiniz. Bunun için önce klavyeden Control ve b tuşlarına basılır, ardından d tuşuna basılır. Böylece oturum arka planda çalışmaya devam eder.
Daha sonra aynı oturuma geri dönmek için şu komut kullanılır:
tmux attach -t wpimport
Örnek tam işlem sırası
Aşağıda datweb.com.tr örneğine göre, temel akış tek parça halinde verilmiştir. Bu yapı özellikle ay ay XML import yapan sistemlerde oldukça kullanışlıdır.
find /tmp -xdev -type f -name "*.tmp" -mmin +30 -delete
su - datwebcomtr
cd ~/public_html
tmux ls
tmux new -s wpimport
ls -lh datweb.xml
wp import datweb.xml --authors=create
wp media regenerate --yes
Daha sağlıklı çalışma düzeni
En güvenli yöntem önce ilgili aya ait XML dosyasını içe aktarmak, ardından aynı aya ait uploads klasörünü hedef siteye koymak ve son olarak medya boyutlarını yeniden üretmektir. Eski yöntem budur ve büyük sitelerde hâlâ en sorunsuz yöntemlerden biridir. Panelden tek tıkla yapılmaya çalışılan taşımalar küçük sitelerde iş görür, fakat büyük arşivli yayın sitelerinde komut satırıyla kontrollü ilerlemek çok daha akıllıcadır.