{"id":31226,"date":"2025-10-07T12:21:41","date_gmt":"2025-10-07T09:21:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/"},"modified":"2025-10-07T12:21:41","modified_gmt":"2025-10-07T09:21:41","slug":"rsync-nedir-ve-neden-kullanmaliyiz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/","title":{"rendered":"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?"},"content":{"rendered":"<p><title>Rsync ile Yerel ve Uzak Dizinleri Senkronize Etme Rehberi<\/title><br \/>\n<body><\/p>\n<p>Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync&#8217;i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync&#8217;in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.<\/p>\n<h2>Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h2>\n<p>Rsync, &#8220;remote sync&#8221; kelimelerinin k\u0131saltmas\u0131d\u0131r ve ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, dosyalar\u0131 ve dizinleri yerel veya uzak konumlar aras\u0131nda verimli bir \u015fekilde senkronize etmek i\u00e7in tasarlanm\u0131\u015f, komut sat\u0131r\u0131 tabanl\u0131, a\u00e7\u0131k kaynakl\u0131 bir yard\u0131mc\u0131 programd\u0131r. Geleneksel dosya kopyalama y\u00f6ntemlerinden (\u00f6rne\u011fin <code>cp<\/code> veya <code>scp<\/code>) farkl\u0131 olarak, Rsync sadece kaynak ve hedef aras\u0131ndaki de\u011fi\u015fen k\u0131s\u0131mlar\u0131 (farklar\u0131) transfer ederek bant geni\u015fli\u011finden ve zamandan \u00f6nemli \u00f6l\u00e7\u00fcde tasarruf sa\u011flar. Bu &#8220;delta transfer&#8221; algoritmas\u0131, \u00f6zellikle b\u00fcy\u00fck dosyalar veya yava\u015f a\u011f ba\u011flant\u0131lar\u0131 \u00fczerinden yap\u0131lan senkronizasyonlarda Rsync&#8217;i vazge\u00e7ilmez k\u0131lar.<\/p>\n<p>Rsync&#8217;in temel avantajlar\u0131 aras\u0131nda veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc koruma, h\u0131z\u0131 optimize etme ve esnek yap\u0131land\u0131rma se\u00e7enekleri bulunur. \u00d6rne\u011fin, dosyalar\u0131 transfer ederken s\u0131k\u0131\u015ft\u0131rma uygulayabilir, sembolik linkleri, izinleri, sahiplik bilgilerini ve zaman damgalar\u0131n\u0131 koruyabilir. Bu \u00f6zellikler, Rsync&#8217;i sadece basit bir dosya kopyalama arac\u0131ndan \u00e7ok daha fazlas\u0131 yapar; onu g\u00fc\u00e7l\u00fc bir yedekleme ve veri ta\u015f\u0131ma \u00e7\u00f6z\u00fcm\u00fcne d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. \u00d6zellikle sunucular aras\u0131 veri aktar\u0131mlar\u0131nda, web sitesi g\u00fcncellemelerinde veya geli\u015ftirme ortamlar\u0131n\u0131n senkronizasyonunda Rsync&#8217;in sundu\u011fu performans ve g\u00fcvenilirlik, i\u015f y\u00fck\u00fcn\u00fcz\u00fc hafifletir ve olas\u0131 hatalar\u0131 minimize eder.<\/p>\n<p>Peki, neden Rsync kullanmal\u0131y\u0131z? Cevap olduk\u00e7a basit: verimlilik ve g\u00fcvenilirlik. Diyelim ki, her g\u00fcn gigabaytlarca verinin bulundu\u011fu bir dizini uzak bir sunucuya yedeklemeniz gerekiyor. E\u011fer bunu <code>cp<\/code> veya <code>scp<\/code> ile yapmaya kalkarsan\u0131z, her seferinde t\u00fcm veriyi yeniden kopyalaman\u0131z gerekir ki bu hem \u00e7ok zaman al\u0131r hem de a\u011f kaynaklar\u0131n\u0131z\u0131 gereksiz yere t\u00fcketir. Rsync ise ak\u0131ll\u0131ca davran\u0131r; kaynak ve hedef dizinleri kar\u015f\u0131la\u015ft\u0131r\u0131r, yaln\u0131zca de\u011fi\u015fen veya yeni eklenen dosyalar\u0131 tespit eder ve sadece bu farklar\u0131 transfer eder. Hatta bir dosyan\u0131n sadece k\u00fc\u00e7\u00fck bir k\u0131sm\u0131 de\u011fi\u015ftiyse, Rsync sadece o de\u011fi\u015fen blo\u011fu g\u00f6ndererek daha da fazla optimizasyon sa\u011flar. Bu delta transfer \u00f6zelli\u011fi, \u00f6zellikle b\u00fcy\u00fck veritaban\u0131 yedeklemeleri veya medya dosyalar\u0131 gibi s\u0131k g\u00fcncellenen ama tamam\u0131 de\u011fi\u015fmeyen i\u00e7erikler i\u00e7in hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<p>Ayr\u0131ca, Rsync&#8217;in esnekli\u011fi sayesinde, senkronizasyon s\u00fcre\u00e7lerinizi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ince ayar yapabilirsiniz. \u00d6rne\u011fin, belirli dosya t\u00fcrlerini d\u0131\u015far\u0131da b\u0131rakabilir, yaln\u0131zca belirli boyutlardaki dosyalar\u0131 kopyalayabilir veya eski s\u00fcr\u00fcmleri koruyarak s\u00fcr\u00fcm kontrol\u00fc benzeri bir yedekleme stratejisi olu\u015fturabilirsiniz. Bu sayede, gereksiz verilerin aktar\u0131m\u0131n\u0131 engelleyerek hem depolama alan\u0131ndan hem de bant geni\u015fli\u011finden tasarruf edersiniz. Sonu\u00e7 olarak, Rsync; veri y\u00f6netimi, yedekleme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizde size zaman, kaynak ve g\u00f6n\u00fcl rahatl\u0131\u011f\u0131 sa\u011flayan g\u00fc\u00e7l\u00fc bir m\u00fcttefiktir.<\/p>\n<h2>Rsync Kurulumu ve Temel Kullan\u0131m\u0131na Giri\u015f<\/h2>\n<p>Rsync&#8217;i kullanmaya ba\u015flamak olduk\u00e7a kolayd\u0131r, \u00e7\u00fcnk\u00fc \u00e7o\u011fu Linux ve macOS da\u011f\u0131t\u0131m\u0131nda genellikle varsay\u0131lan olarak y\u00fckl\u00fc gelir. E\u011fer y\u00fckl\u00fc de\u011filse veya Windows kullan\u0131yorsan\u0131z, birka\u00e7 basit ad\u0131mla Rsync&#8217;i sisteminize dahil edebilirsiniz. Bu b\u00f6l\u00fcmde, Rsync&#8217;in kurulumunu ve temel komut yap\u0131s\u0131n\u0131 \u00f6\u011frenerek ilk senkronizasyon i\u015fleminizi nas\u0131l ger\u00e7ekle\u015ftirece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>Rsync \u00c7e\u015fitli \u0130\u015fletim Sistemlerinde Nas\u0131l Kurulur?<\/h3>\n<p><strong>Linux (Debian\/Ubuntu tabanl\u0131):<\/strong><\/p>\n<p>E\u011fer sisteminizde Rsync y\u00fckl\u00fc de\u011filse, terminali a\u00e7\u0131p a\u015fa\u011f\u0131daki komutu kullanarak kolayca kurabilirsiniz:<\/p>\n<pre><code>sudo apt update\nsudo apt install rsync\n<\/code><\/pre>\n<p><strong>Linux (Fedora\/CentOS tabanl\u0131):<\/strong><\/p>\n<pre><code>sudo yum install rsync\n<\/code><\/pre>\n<p><strong>macOS:<\/strong><\/p>\n<p>macOS&#8217;ta Rsync genellikle varsay\u0131lan olarak y\u00fckl\u00fc gelir. Terminalde <code>rsync --version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak y\u00fckl\u00fc olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz. E\u011fer daha yeni bir s\u00fcr\u00fcm veya Homebrew \u00fczerinden kurulum yapmak isterseniz:<\/p>\n<pre><code>brew install rsync\n<\/code><\/pre>\n<p><strong>Windows:<\/strong><\/p>\n<p>Windows&#8217;ta Rsync&#8217;i do\u011frudan \u00e7al\u0131\u015ft\u0131rmak m\u00fcmk\u00fcn de\u011fildir. Ancak, Windows Subsystem for Linux (WSL) kullanarak Linux ortam\u0131n\u0131 taklit edebilir ve yukar\u0131daki Linux komutlar\u0131yla Rsync&#8217;i kurabilirsiniz. Alternatif olarak, Cygwin gibi bir Unix benzeri ortam veya DeltaCopy gibi Rsync tabanl\u0131 GUI ara\u00e7lar\u0131 da kullan\u0131labilir. WSL, yerel ve uzak Windows dizinleri aras\u0131nda senkronizasyon i\u00e7in en pratik y\u00f6ntemlerden biridir.<\/p>\n<h3>Rsync&#8217;in Temel Komut Yap\u0131s\u0131 ve \u0130lk Ad\u0131mlar<\/h3>\n<p>Rsync&#8217;in temel komut yap\u0131s\u0131 olduk\u00e7a basittir: <code>rsync [SE\u00c7ENEKLER] KAYNAK HEDEF<\/code>. Burada <code>KAYNAK<\/code>, kopyalamak istedi\u011finiz dosyalar\u0131n veya dizinlerin bulundu\u011fu yerdir; <code>HEDEF<\/code> ise bu dosyalar\u0131n kopyalanaca\u011f\u0131 yerdir. Hem kaynak hem de hedef yerel bir dizin olabilece\u011fi gibi, uzak bir sunucudaki bir dizin de olabilir.<\/p>\n<p><strong>Yerelden Yerel Dizinlere Basit Kopyalama:<\/strong><\/p>\n<p>\u00d6ncelikle, Rsync&#8217;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in basit bir yerel kopyalama \u00f6rne\u011fiyle ba\u015flayal\u0131m. Diyelim ki <code>\/home\/kullanici\/belgelerim<\/code> dizinindeki t\u00fcm dosyalar\u0131 <code>\/home\/kullanici\/yedekler<\/code> dizinine kopyalamak istiyorsunuz:<\/p>\n<pre><code>rsync -av \/home\/kullanici\/belgelerim\/ \/home\/kullanici\/yedekler\/\n<\/code><\/pre>\n<p>Bu komuttaki se\u00e7enekler olduk\u00e7a \u00f6nemlidir:<\/p>\n<ul>\n<li><code>-a<\/code> (<code>--archive<\/code>): Ar\u015fiv modu. Bu, Rsync&#8217;in en s\u0131k kullan\u0131lan se\u00e7eneklerinden biridir. Dosyalar\u0131 rek\u00fcrsif olarak kopyalaman\u0131n yan\u0131 s\u0131ra, sembolik linkleri, izinleri, zaman damgalar\u0131n\u0131, grup ve sahip bilgilerini de korur. Yani, dosyalar\u0131n &#8220;ar\u015fiv niteliklerini&#8221; oldu\u011fu gibi ta\u015f\u0131r.<\/li>\n<li><code>-v<\/code> (<code>--verbose<\/code>): Ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131. Bu se\u00e7enek, Rsync&#8217;in hangi dosyalar\u0131 kopyalad\u0131\u011f\u0131n\u0131 veya hangi i\u015flemleri yapt\u0131\u011f\u0131n\u0131 terminalde g\u00f6sterir. Bu sayede i\u015flemin ilerleyi\u015fini takip edebilirsiniz.<\/li>\n<\/ul>\n<p><strong>Dikkat Edilmesi Gereken Nokta: Kaynak Yolunun Sonundaki E\u011fik \u00c7izgi (<code>\/<\/code>)!<\/strong><\/p>\n<p>Yukar\u0131daki \u00f6rnekte <code>\/home\/kullanici\/belgelerim\/<\/code> \u015feklinde kaynak yolunun sonunda bir e\u011fik \u00e7izgi (<code>\/<\/code>) kulland\u0131k. Bu kritik bir ayr\u0131nt\u0131d\u0131r:<\/p>\n<ul>\n<li><strong><code>\/home\/kullanici\/belgelerim\/<\/code> (sonunda e\u011fik \u00e7izgi ile):<\/strong> Bu, <code>belgelerim<\/code> dizininin <strong>i\u00e7eri\u011fini<\/strong> kopyala demektir. Yani, <code>belgelerim<\/code> dizininin i\u00e7indeki t\u00fcm dosyalar ve alt dizinler do\u011frudan <code>\/home\/kullanici\/yedekler\/<\/code> dizinine kopyalan\u0131r.<\/li>\n<li><strong><code>\/home\/kullanici\/belgelerim<\/code> (sonunda e\u011fik \u00e7izgi olmadan):<\/strong> Bu, <code>belgelerim<\/code> dizininin <strong>kendisini<\/strong> kopyala demektir. Yani, <code>\/home\/kullanici\/yedekler\/belgelerim\/<\/code> \u015feklinde yeni bir dizin olu\u015fturulur ve <code>belgelerim<\/code> dizininin t\u00fcm i\u00e7eri\u011fi bu yeni dizine kopyalan\u0131r.<\/li>\n<\/ul>\n<p>Bu fark, \u00f6zellikle otomatize edilmi\u015f betiklerde veya b\u00fcy\u00fck veri transferlerinde istenmeyen sonu\u00e7lara yol a\u00e7mamak i\u00e7in \u00e7ok iyi anla\u015f\u0131lmal\u0131d\u0131r.<\/p>\n<h3>\u0130\u015flemi \u00d6nizleme: Dry Run (Kuru \u00c7al\u0131\u015ft\u0131rma)<\/h3>\n<p>Rsync&#8217;in en faydal\u0131 \u00f6zelliklerinden biri <code>--dry-run<\/code> (veya k\u0131saca <code>-n<\/code>) se\u00e7ene\u011fidir. Bu se\u00e7enek, Rsync&#8217;in ger\u00e7ekte hi\u00e7bir dosya kopyalamadan veya silmeden, sadece ne yapaca\u011f\u0131n\u0131 size g\u00f6stermesini sa\u011flar. Bu, \u00f6zellikle karma\u015f\u0131k komutlar veya <code>--delete<\/code> gibi potansiyel olarak y\u0131k\u0131c\u0131 se\u00e7enekler kullan\u0131rken olas\u0131 hatalar\u0131 \u00f6nlemek i\u00e7in hayati bir ad\u0131md\u0131r.<\/p>\n<pre><code>rsync -avn \/home\/kullanici\/belgelerim\/ \/home\/kullanici\/yedekler\/\n<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Rsync size hangi dosyalar\u0131n kopyalanaca\u011f\u0131n\u0131, hangilerinin g\u00fcncellenece\u011fini veya silinece\u011fini listeleyecektir, ancak ger\u00e7ekte hi\u00e7bir de\u011fi\u015fiklik yapmayacakt\u0131r. Bu sayede, komutunuzun bekledi\u011finiz gibi \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz.<\/p>\n<h3>\u0130lerleme Takibi: Progress Se\u00e7ene\u011fi<\/h3>\n<p>B\u00fcy\u00fck dosyalar\u0131 veya \u00e7ok say\u0131da dosyay\u0131 senkronize ederken, i\u015flemin ne kadar ilerledi\u011fini g\u00f6rmek isteyebilirsiniz. <code>--progress<\/code> se\u00e7ene\u011fi, her dosyan\u0131n kopyalama durumunu, y\u00fczde olarak ilerlemesini ve tahmini kalan s\u00fcreyi g\u00f6sterir:<\/p>\n<pre><code>rsync -av --progress \/home\/kullanici\/belgelerim\/ \/home\/kullanici\/yedekler\/\n<\/code><\/pre>\n<p>Bu temel bilgilerle, Rsync&#8217;in g\u00fcc\u00fcn\u00fc ke\u015ffetmeye haz\u0131rs\u0131n\u0131z. Bir sonraki b\u00f6l\u00fcmde, Rsync&#8217;i uzak dizinlerle nas\u0131l senkronize edece\u011fimize odaklanaca\u011f\u0131z, ki bu da Rsync&#8217;in en yayg\u0131n kullan\u0131m alanlar\u0131ndan biridir.<\/p>\n<h2>Yerelden Uzak Dizinlere Rsync ile Nas\u0131l Senkronizasyon Yap\u0131l\u0131r?<\/h2>\n<p>Rsync&#8217;in ger\u00e7ek g\u00fcc\u00fc, yerel sisteminiz ile uzak bir sunucu aras\u0131nda dosya senkronizasyonu yaparken ortaya \u00e7\u0131kar. Bu i\u015flem genellikle SSH (Secure Shell) protokol\u00fc \u00fczerinden g\u00fcvenli bir \u015fekilde ger\u00e7ekle\u015ftirilir. SSH, verilerin \u015fifrelenerek aktar\u0131lmas\u0131n\u0131 sa\u011flar ve b\u00f6ylece hassas bilgilerinizin g\u00fcvenli\u011fini garanti alt\u0131na al\u0131r. Bu b\u00f6l\u00fcmde, Rsync&#8217;i SSH ile birle\u015ftirerek yerel ve uzak dizinler aras\u0131nda nas\u0131l senkronizasyon yapaca\u011f\u0131n\u0131z\u0131, s\u0131k kullan\u0131lan se\u00e7enekleri ve pratik vaka analizlerini ele alaca\u011f\u0131z.<\/p>\n<h3>SSH \u00dczerinden Uzak Ba\u011flant\u0131 ve Rsync Komut Yap\u0131s\u0131<\/h3>\n<p>Rsync, varsay\u0131lan olarak SSH&#8217;yi kullanarak uzak sistemlere ba\u011flan\u0131r. Uzak bir sisteme ba\u011flanmak i\u00e7in Rsync komut yap\u0131s\u0131na kullan\u0131c\u0131 ad\u0131n\u0131 ve sunucu adresini eklemeniz yeterlidir. Uzak yol genellikle <code>kullanici@sunucu_adresi:\/uzak\/dizin\/yolu<\/code> format\u0131nda belirtilir.<\/p>\n<p><strong>Yerelden Uzak Sunucuya Dosya G\u00f6nderme:<\/strong><\/p>\n<p>Diyelim ki, yerel bilgisayar\u0131n\u0131zdaki <code>\/var\/www\/html\/projem<\/code> dizinini, uzak sunucudaki <code>kullanici@ornek.com:\/var\/www\/html\/projem_yedek<\/code> dizinine senkronize etmek istiyorsunuz:<\/p>\n<pre><code>rsync -avz --progress \/var\/www\/html\/projem\/ kullanici@ornek.com:\/var\/www\/html\/projem_yedek\n<\/code><\/pre>\n<p>Bu komuttaki ek se\u00e7eneklere dikkat edelim:<\/p>\n<ul>\n<li><code>-a<\/code> (<code>--archive<\/code>): Daha \u00f6nce bahsetti\u011fimiz gibi, ar\u015fiv modu t\u00fcm dosya \u00f6zelliklerini (izinler, zaman damgalar\u0131 vb.) korur.<\/li>\n<li><code>-v<\/code> (<code>--verbose<\/code>): Ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131 sa\u011flar.<\/li>\n<li><code>-z<\/code> (<code>--compress<\/code>): Veri transferi s\u0131ras\u0131nda dosyalar\u0131 s\u0131k\u0131\u015ft\u0131r\u0131r. Bu, \u00f6zellikle yava\u015f a\u011f ba\u011flant\u0131lar\u0131nda bant geni\u015fli\u011finden tasarruf etmenizi sa\u011flar. Ancak, zaten s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyalar (\u00f6rne\u011fin JPG, ZIP) i\u00e7in ek bir fayda sa\u011flamaz ve hatta k\u00fc\u00e7\u00fck bir performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olabilir.<\/li>\n<li><code>--progress<\/code>: Aktar\u0131m\u0131n ilerlemesini g\u00f6sterir.<\/li>\n<\/ul>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, SSH \u015fifreniz istenecektir (e\u011fer SSH anahtarlar\u0131yla parola girmeden ba\u011flant\u0131 kurmad\u0131ysan\u0131z). \u015eifreyi girdikten sonra, Rsync senkronizasyon i\u015flemini ba\u015flat\u0131r.<\/p>\n<p><strong>Uzak Sunucudan Yerel Dizinlere Dosya \u00c7ekme:<\/strong><\/p>\n<p>Benzer \u015fekilde, uzak sunucudaki bir dizini yerel sisteminize senkronize etmek de m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, uzak sunucudaki <code>\/var\/log\/nginx<\/code> dizinini yerel bilgisayar\u0131n\u0131zdaki <code>\/home\/kullanici\/nginx_loglari<\/code> dizinine \u00e7ekmek istiyorsunuz:<\/p>\n<pre><code>rsync -avz --progress kullanici@ornek.com:\/var\/log\/nginx\/ \/home\/kullanici\/nginx_loglari\n<\/code><\/pre>\n<p>Burada kaynak ve hedef konumlar\u0131n\u0131n yer de\u011fi\u015ftirdi\u011fine dikkat edin. Komut yap\u0131s\u0131 ayn\u0131 kal\u0131r, sadece ak\u0131\u015f y\u00f6n\u00fc de\u011fi\u015fir.<\/p>\n<h3>Kritik Se\u00e7enek: <code class=\"language-\">--delete<\/code> ve \u00d6nemi<\/h3>\n<p>Rsync&#8217;in en g\u00fc\u00e7l\u00fc ancak dikkatli kullan\u0131lmas\u0131 gereken se\u00e7eneklerinden biri <code>--delete<\/code>&#8216;dir. Bu se\u00e7enek, hedef dizinde kaynak dizinde bulunmayan dosyalar\u0131n silinmesini sa\u011flar. Bu, hem kaynak hem de hedef dizinin tamamen ayn\u0131 olmas\u0131n\u0131 istedi\u011finiz durumlarda (\u00f6rne\u011fin, tam bir yans\u0131ma veya ayna kopyas\u0131 olu\u015ftururken) \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code>rsync -avz --delete \/var\/www\/html\/projem\/ kullanici@ornek.com:\/var\/www\/html\/projem_yedek\n<\/code><\/pre>\n<p><strong>UYARI:<\/strong> <code>--delete<\/code> se\u00e7ene\u011fini kullanmadan \u00f6nce her zaman <code>--dry-run<\/code> (<code>-n<\/code>) ile komutu test etmeniz \u015fiddetle tavsiye edilir. Yanl\u0131\u015fl\u0131kla \u00f6nemli verilerinizi silmek istemezsiniz!<\/p>\n<pre><code>rsync -avzn --delete \/var\/www\/html\/projem\/ kullanici@ornek.com:\/var\/www\/html\/projem_yedek\n<\/code><\/pre>\n<p>Bu komut, hangi dosyalar\u0131n silinece\u011fini size g\u00f6sterecek, ancak ger\u00e7ekte hi\u00e7bir \u015feyi silmeyecektir.<\/p>\n<h3>Vaka Analizi 1: Geli\u015ftirme Sunucusundan \u00dcretim Sunucusuna Kod Da\u011f\u0131t\u0131m\u0131<\/h3>\n<p>Bir web geli\u015ftiricisi oldu\u011funuzu ve yerel geli\u015ftirme ortam\u0131n\u0131zda (veya bir test sunucusunda) bir web projesi \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z\u0131 varsayal\u0131m. Yeni bir \u00f6zellik geli\u015ftirdiniz ve bunu canl\u0131 \u00fcretim sunucusuna da\u011f\u0131tman\u0131z gerekiyor. Rsync, bu i\u015flemi h\u0131zl\u0131, g\u00fcvenli ve hatas\u0131z bir \u015fekilde yapman\u0131z\u0131 sa\u011flar.<\/p>\n<p><strong>Senaryo:<\/strong> Yerel makinenizdeki <code>~\/my-website\/<\/code> dizinini, \u00fcretim sunucusundaki <code>webadmin@live-server.com:\/var\/www\/html\/<\/code> dizinine da\u011f\u0131tmak.<\/p>\n<pre><code><div class=\"expert-tip\">\n  Uzman \u0130pucu: Da\u011f\u0131t\u0131mdan \u00f6nce her zaman bir yedek al\u0131n ve --dry-run ile test edin!\n<\/div>\nrsync -avz --delete --exclude 'node_modules\/' --exclude '.git\/' --exclude '.env' --progress \\\n      ~\/my-website\/ webadmin@live-server.com:\/var\/www\/html\/\n<\/code><\/pre>\n<p>Bu komut \u015funlar\u0131 yapar:<\/p>\n<ul>\n<li><code>-avz --progress<\/code>: Ar\u015fiv modunda, ayr\u0131nt\u0131l\u0131, s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ve ilerleme g\u00f6stergeli senkronizasyon.<\/li>\n<li><code>--delete<\/code>: \u00dcretim sunucusunda geli\u015ftirme ortam\u0131nda olmayan dosyalar\u0131 siler. Bu, eski dosyalar\u0131n temizlenmesini sa\u011flar.<\/li>\n<li><code>--exclude 'node_modules\/'<\/code>: <code>node_modules<\/code> dizinini kopyalaman\u0131n d\u0131\u015f\u0131nda b\u0131rak\u0131r. Bu t\u00fcr ba\u011f\u0131ml\u0131l\u0131klar genellikle \u00fcretim sunucusunda yeniden kurulur ve transfer edilmesi gereksizdir.<\/li>\n<li><code>--exclude '.git\/'<\/code>: Git versiyon kontrol dizinini d\u0131\u015far\u0131da b\u0131rak\u0131r.<\/li>\n<li><code>--exclude '.env'<\/code>: \u00c7evre de\u011fi\u015fkenlerini i\u00e7eren hassas <code>.env<\/code> dosyas\u0131n\u0131 d\u0131\u015far\u0131da b\u0131rak\u0131r, \u00e7\u00fcnk\u00fc bu dosya genellikle \u00fcretimde farkl\u0131d\u0131r veya manuel olarak y\u00f6netilir.<\/li>\n<\/ul>\n<p>Bu \u015fekilde, Rsync ile sadece de\u011fi\u015fen kod dosyalar\u0131n\u0131 h\u0131zl\u0131ca aktar\u0131rken, gereksiz veya hassas dosyalar\u0131 g\u00fcvenle d\u0131\u015far\u0131da b\u0131rakarak \u00fcretim ortam\u0131n\u0131z\u0131n b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc koruyabilirsiniz. Bu vaka analizi, Rsync&#8217;in esnekli\u011finin ve verimlili\u011finin ger\u00e7ek d\u00fcnya uygulamalar\u0131nda nas\u0131l de\u011fer katt\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a g\u00f6stermektedir.<\/p>\n<h2>Rsync ile Verimli Yedekleme Stratejileri Nas\u0131l Olu\u015fturulur?<\/h2>\n<p>Veri yedekleme, herhangi bir sistem y\u00f6neticisi veya kullan\u0131c\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. Rsync, sadece dosyalar\u0131 senkronize etmekle kalmaz, ayn\u0131 zamanda ak\u0131ll\u0131 ve verimli yedekleme stratejileri olu\u015fturman\u0131za da olanak tan\u0131r. \u00d6zellikle art\u0131ml\u0131 yedekleme ve filtreleme se\u00e7enekleri sayesinde, disk alan\u0131ndan ve a\u011f bant geni\u015fli\u011finden tasarruf ederek g\u00fcvenilir yedekler alabilirsiniz. Bu b\u00f6l\u00fcmde, Rsync ile nas\u0131l etkili yedekleme \u00e7\u00f6z\u00fcmleri olu\u015fturabilece\u011finizi, art\u0131ml\u0131 yedeklemenin avantajlar\u0131n\u0131 ve dosya filtreleme tekniklerini inceleyece\u011fiz.<\/p>\n<h3>Art\u0131ml\u0131 Yedekleme ve Hard Link Kullan\u0131m\u0131 (<code class=\"language-\">--link-dest<\/code>)<\/h3>\n<p>Art\u0131ml\u0131 yedekleme, sadece son yedeklemeden bu yana de\u011fi\u015fen dosyalar\u0131 kopyalayarak yedekleme s\u00fcresini ve depolama alan\u0131n\u0131 minimize eden bir y\u00f6ntemdir. Rsync, <code>--link-dest<\/code> se\u00e7ene\u011fi ile bu i\u015flemi \u00e7ok verimli bir \u015fekilde ger\u00e7ekle\u015ftirebilir. Bu se\u00e7enek, \u00f6nceki bir yede\u011fe i\u015faret eden hard link&#8217;ler olu\u015fturarak, de\u011fi\u015fmeyen dosyalar\u0131n her yedeklemede tekrar kopyalanmas\u0131n\u0131 engeller. Sonu\u00e7 olarak, her yedekleme tam bir yedekleme gibi g\u00f6r\u00fcnse de, diskte sadece yeni veya de\u011fi\u015fen dosyalar yer kaplar.<\/p>\n<p><strong>\u00d6rnek Senaryo: G\u00fcnl\u00fck Art\u0131ml\u0131 Yedekleme<\/strong><\/p>\n<p>Diyelim ki, her g\u00fcn <code>\/home\/kullanici\/verilerim<\/code> dizininin yede\u011fini <code>\/mnt\/yedek_disk\/gunluk_yedekler\/<\/code> dizininde tutmak istiyorsunuz. Ve her yedekleme, o g\u00fcn\u00fcn tarihiyle adland\u0131r\u0131lm\u0131\u015f bir dizine kaydedilecek.<\/p>\n<pre><code>#!\/bin\/bash\n\n# Mevcut tarih\nDATE=$(date +%Y-%m-%d)\n\n# Kaynak dizin\nSOURCE_DIR=\"\/home\/kullanici\/verilerim\/\"\n\n# Hedef dizinin ana yolu\nBACKUP_BASE_DIR=\"\/mnt\/yedek_disk\/gunluk_yedekler\/\"\n\n# Bu yedeklemenin yap\u0131laca\u011f\u0131 dizin\nCURRENT_BACKUP_DIR=\"${BACKUP_BASE_DIR}${DATE}\/\"\n\n# \u00d6nceki g\u00fcn\u00fcn yede\u011fi (e\u011fer varsa)\n# D\u00fcnk\u00fc yede\u011fi bulmak i\u00e7in basit bir yol: en son olu\u015fturulan dizini bulmak\nPREVIOUS_BACKUP_DIR=$(find \"$BACKUP_BASE_DIR\" -maxdepth 1 -type d -name \"2*\" | sort -r | head -n 1)\n\n# Yedekleme komutu\n# E\u011fer \u00f6nceki yedek varsa, --link-dest kullanarak art\u0131ml\u0131 yedekleme yap\nif [ -d \"$PREVIOUS_BACKUP_DIR\" ] && [ \"$PREVIOUS_BACKUP_DIR\" != \"$CURRENT_BACKUP_DIR\" ]; then\n    echo \"Art\u0131ml\u0131 yedekleme yap\u0131l\u0131yor, \u00f6nceki yedek: $PREVIOUS_BACKUP_DIR\"\n    rsync -av --delete --link-dest=\"$PREVIOUS_BACKUP_DIR\" \"$SOURCE_DIR\" \"$CURRENT_BACKUP_DIR\"\nelse\n    echo \"\u0130lk yedekleme veya \u00f6nceki yedek bulunamad\u0131.\"\n    rsync -av --delete \"$SOURCE_DIR\" \"$CURRENT_BACKUP_DIR\"\nfi\n\necho \"Yedekleme tamamland\u0131: $CURRENT_BACKUP_DIR\"\n<\/code><\/pre>\n<p>Bu betik \u015funlar\u0131 yapar:<\/p>\n<ul>\n<li>Mevcut tarihe g\u00f6re yeni bir yedekleme dizini olu\u015fturur (\u00f6rne\u011fin <code>\/mnt\/yedek_disk\/gunluk_yedekler\/2023-10-27\/<\/code>).<\/li>\n<li>\u00d6nceki g\u00fcn\u00fcn yedekleme dizinini bulur.<\/li>\n<li>E\u011fer \u00f6nceki yedekleme dizini varsa, <code>--link-dest<\/code> se\u00e7ene\u011fini kullanarak bu dizindeki de\u011fi\u015fmeyen dosyalar i\u00e7in hard link&#8217;ler olu\u015fturur. Bu, diskte sadece de\u011fi\u015fen dosyalar\u0131n yeni kopyalar\u0131n\u0131 tutar, ancak her yedekleme dizini tam bir yedekleme gibi eri\u015filebilir olur.<\/li>\n<li><code>--delete<\/code> se\u00e7ene\u011fi, kaynak dizinde olmayan dosyalar\u0131n yedekleme dizininden de silinmesini sa\u011flar, b\u00f6ylece yedekleriniz her zaman kayna\u011f\u0131n tam bir kopyas\u0131 olur.<\/li>\n<\/ul>\n<p>Bu strateji, birden fazla tam yedekleme tutarken depolama alan\u0131ndan b\u00fcy\u00fck \u00f6l\u00e7\u00fcde tasarruf etmenizi sa\u011flar.<\/p>\n<h3>Dosya Filtreleme: <code class=\"language-\">--exclude<\/code> ve <code class=\"language-\">--include<\/code> Se\u00e7enekleri<\/h3>\n<p>Yedekleme yaparken, belirli dosyalar\u0131 veya dizinleri d\u0131\u015far\u0131da b\u0131rakmak (<code>--exclude<\/code>) veya sadece belirli dosyalar\u0131 dahil etmek (<code>--include<\/code>) isteyebilirsiniz. Bu, gereksiz verilerin kopyalanmas\u0131n\u0131 engelleyerek yedekleme boyutunu ve s\u00fcresini optimize eder.<\/p>\n<p><strong>\u00d6rnek: Belirli Dosyalar\u0131 D\u0131\u015far\u0131da B\u0131rakma<\/strong><\/p>\n<p>Yedekleme yaparken <code>.git<\/code> dizinlerini, ge\u00e7ici dosyalar\u0131 (<code>*.tmp<\/code>) ve log dosyalar\u0131n\u0131 (<code>*.log<\/code>) d\u0131\u015far\u0131da b\u0131rakmak isteyelim:<\/p>\n<pre><code>rsync -avz --exclude '.git\/' --exclude '*.tmp' --exclude '*.log' \/home\/kullanici\/proje\/ \/mnt\/yedek_disk\/proje_yedek\/\n<\/code><\/pre>\n<p>Birden fazla d\u0131\u015flama kural\u0131 ekleyebilirsiniz. Her kural i\u00e7in ayr\u0131 bir <code>--exclude<\/code> se\u00e7ene\u011fi kullan\u0131l\u0131r. D\u0131\u015flama kurallar\u0131, Rsync&#8217;in tarad\u0131\u011f\u0131 her dosya ve dizin i\u00e7in soldan sa\u011fa do\u011fru uygulan\u0131r.<\/p>\n<p><strong>\u00d6rnek: Sadece Belirli Dosyalar\u0131 Dahil Etme<\/strong><\/p>\n<p>Bazen sadece belirli dosya t\u00fcrlerini yedeklemek isteyebilirsiniz. \u00d6rne\u011fin, sadece <code>.jpg<\/code> ve <code>.png<\/code> dosyalar\u0131n\u0131 kopyalamak:<\/p>\n<pre><code>rsync -avz --include '*.jpg' --include '*.png' --exclude '*' \/home\/kullanici\/fotolar\/ \/mnt\/yedek_disk\/fotolar_yedek\/\n<\/code><\/pre>\n<p>Bu komuttaki s\u0131ralama \u00f6nemlidir: \u00d6nce dahil edilecekler (<code>--include<\/code>) belirtilir, ard\u0131ndan her \u015feyi d\u0131\u015flamak i\u00e7in genel bir <code>--exclude '*'<\/code> kullan\u0131l\u0131r. Rsync, kurallar\u0131 s\u0131ral\u0131 olarak de\u011ferlendirir ve bir dosya bir kurala uydu\u011funda di\u011fer kurallara bakmaz. Bu nedenle, \u00f6nce dahil etmek istediklerinizi belirtip, sonra geri kalan her \u015feyi d\u0131\u015flaman\u0131z gerekir.<\/p>\n<h3>Vaka Analizi 2: G\u00fcnl\u00fck\/Haftal\u0131k Sunucu Yedeklemesi<\/h3>\n<p>Bir web sunucusunun (\u00f6rne\u011fin, bir WordPress sitesi bar\u0131nd\u0131ran) d\u00fczenli yedeklemesini almak, felaket kurtarma plan\u0131n\u0131n temelidir. Rsync ile bu yedeklemeyi otomatik ve verimli hale getirebilirsiniz.<\/p>\n<p><strong>Senaryo:<\/strong> Uzak bir web sunucusundaki <code>\/var\/www\/html\/<\/code> ve <code>\/etc\/<\/code> dizinlerini yerel bir yedekleme sunucusuna yedeklemek. Ancak veritaban\u0131 yede\u011fi, log dosyalar\u0131 ve baz\u0131 cache dizinleri d\u0131\u015far\u0131da b\u0131rak\u0131lacak.<\/p>\n<pre><code>#!\/bin\/bash\n\n# Mevcut tarih\nDATE=$(date +%Y-%m-%d)\n\n# Yedekleme kullan\u0131c\u0131s\u0131 ve sunucu\nREMOTE_USER=\"root\"\nREMOTE_HOST=\"webserver.example.com\"\n\n# Uzak kaynak dizinleri\nREMOTE_WEB_DIR=\"\/var\/www\/html\/\"\nREMOTE_ETC_DIR=\"\/etc\/\"\n\n# Yerel hedef dizin\nLOCAL_BACKUP_BASE=\"\/mnt\/backup_server\/webserver_backups\/\"\nLOCAL_CURRENT_BACKUP_DIR=\"${LOCAL_BACKUP_BASE}${DATE}\/\"\nLOCAL_PREVIOUS_BACKUP_DIR=$(find \"$LOCAL_BACKUP_BASE\" -maxdepth 1 -type d -name \"2*\" | sort -r | head -n 1)\n\n# D\u0131\u015flanacak \u00f6\u011feler i\u00e7in Rsync filtre dosyas\u0131 olu\u015fturma\n# Bu dosyay\u0131 ayr\u0131 bir yerde tutmak daha temizdir.\necho \"wp-content\/cache\/\" > \/tmp\/rsync_exclude.txt\necho \"wp-content\/uploads\/thumbs\/\" >> \/tmp\/rsync_exclude.txt\necho \"*.log\" >> \/tmp\/rsync_exclude.txt\necho \"\/var\/log\/\" >> \/tmp\/rsync_exclude.txt # T\u00fcm log dizinini d\u0131\u015far\u0131da b\u0131rak\necho \"dump.sql\" >> \/tmp\/rsync_exclude.txt # Veritaban\u0131 dump dosyas\u0131n\u0131 d\u0131\u015far\u0131da b\u0131rak\necho \"node_modules\/\" >> \/tmp\/rsync_exclude.txt\necho \".git\/\" >> \/tmp\/rsync_exclude.txt\n\n# Yedekleme i\u015flemi\nmkdir -p \"$LOCAL_CURRENT_BACKUP_DIR\/web\/\"\nmkdir -p \"$LOCAL_CURRENT_BACKUP_DIR\/etc\/\"\n\necho \"Web dizini yedekleniyor...\"\nrsync -avz --delete --exclude-from=\/tmp\/rsync_exclude.txt \\\n      ${LOCAL_PREVIOUS_BACKUP_DIR:+\"--link-dest=$LOCAL_PREVIOUS_BACKUP_DIR\/web\/\"} \\\n      ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_WEB_DIR} \"${LOCAL_CURRENT_BACKUP_DIR}web\/\"\n\necho \"Etc dizini yedekleniyor...\"\nrsync -avz --delete \\\n      ${LOCAL_PREVIOUS_BACKUP_DIR:+\"--link-dest=$LOCAL_PREVIOUS_BACKUP_DIR\/etc\/\"} \\\n      ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_ETC_DIR} \"${LOCAL_CURRENT_BACKUP_DIR}etc\/\"\n\n# Ge\u00e7ici d\u0131\u015flama dosyas\u0131n\u0131 sil\nrm \/tmp\/rsync_exclude.txt\n\necho \"Yedekleme tamamland\u0131: ${LOCAL_CURRENT_BACKUP_DIR}\"\n<\/code><\/pre>\n<p>Bu betik, hem web i\u00e7eri\u011fini hem de sistem yap\u0131land\u0131rmalar\u0131n\u0131 ayr\u0131 ayr\u0131 yedeklerken, art\u0131ml\u0131 yedekleme ve d\u0131\u015flama kurallar\u0131n\u0131 birle\u015ftirir. <code>--exclude-from<\/code> se\u00e7ene\u011fi, d\u0131\u015flanacak \u00f6\u011feleri bir dosyadan okumas\u0131n\u0131 sa\u011flar, bu da komutu daha okunabilir ve y\u00f6netilebilir hale getirir. Bu t\u00fcr bir beti\u011fi Cron i\u015fi olarak ayarlayarak d\u00fczenli ve otomatik yedeklemeler alabilirsiniz. Rsync, bu t\u00fcr kritik yedekleme senaryolar\u0131nda size zaman ve g\u00fcvenilirlik sunan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h2>Rsync Performans\u0131n\u0131 Art\u0131rmak \u0130\u00e7in \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>Rsync, varsay\u0131lan ayarlar\u0131yla bile olduk\u00e7a verimli \u00e7al\u0131\u015fsa da, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri veya k\u0131s\u0131tl\u0131 a\u011f ko\u015fullar\u0131nda performans\u0131n\u0131 daha da optimize etmek i\u00e7in kullanabilece\u011finiz baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve se\u00e7enekler mevcuttur. Bu b\u00f6l\u00fcmde, transfer h\u0131z\u0131n\u0131 art\u0131rmak, bant geni\u015fli\u011fini y\u00f6netmek ve hata tolerans\u0131n\u0131 geli\u015ftirmek i\u00e7in Rsync&#8217;in sundu\u011fu geli\u015fmi\u015f \u00f6zellikleri inceleyece\u011fiz.<\/p>\n<h3>K\u0131smi Dosya Transferleri ve Do\u011frulama: <code class=\"language-\">--partial<\/code> ve <code class=\"language-\">--append-verify<\/code><\/h3>\n<p>B\u00fcy\u00fck dosyalar\u0131 aktar\u0131rken a\u011f ba\u011flant\u0131s\u0131n\u0131n kopmas\u0131 veya kesintiye u\u011framas\u0131 durumunda, Rsync normalde dosyan\u0131n tamam\u0131n\u0131 ba\u015ftan kopyalamak zorunda kal\u0131r. Ancak <code>--partial<\/code> se\u00e7ene\u011fi, kesintiye u\u011frayan transferleri kald\u0131\u011f\u0131 yerden devam ettirmeyi sa\u011flar. Bu, \u00f6zellikle karars\u0131z a\u011flarda veya \u00e7ok b\u00fcy\u00fck dosyalarla \u00e7al\u0131\u015f\u0131rken zamandan b\u00fcy\u00fck \u00f6l\u00e7\u00fcde tasarruf etmenizi sa\u011flar.<\/p>\n<pre><code>rsync -avz --partial \/buyuk_dosya.iso user@remote:\/yedekler\/\n<\/code><\/pre>\n<p>Bu komut, <code>\/buyuk_dosya.iso<\/code>&#8216;yu uzaktaki <code>\/yedekler\/<\/code> dizinine kopyalarken, e\u011fer transfer kesilirse, bir sonraki \u00e7al\u0131\u015ft\u0131rmada kald\u0131\u011f\u0131 yerden devam eder.<\/p>\n<p><code>--append-verify<\/code> se\u00e7ene\u011fi ise, hedefteki dosyan\u0131n boyutunun kaynaktakinden k\u00fc\u00e7\u00fck olmas\u0131 durumunda, sadece eksik kalan k\u0131sm\u0131 eklemeye \u00e7al\u0131\u015f\u0131r. Ancak, bu se\u00e7enek hedefteki dosyan\u0131n de\u011fi\u015ftirilmedi\u011fini varsayar. E\u011fer dosyan\u0131n ortas\u0131nda bir de\u011fi\u015fiklik yap\u0131lm\u0131\u015fsa, bu se\u00e7enek hatal\u0131 bir senkronizasyona yol a\u00e7abilir. Genellikle, <code>--partial<\/code> tek ba\u015f\u0131na yeterlidir ve daha g\u00fcvenlidir.<\/p>\n<h3>Bant Geni\u015fli\u011fi S\u0131n\u0131rlama: <code class=\"language-\">--bwlimit<\/code><\/h3>\n<p>Rsync, varsay\u0131lan olarak mevcut t\u00fcm a\u011f bant geni\u015fli\u011fini kullanmaya \u00e7al\u0131\u015f\u0131r. Bu, di\u011fer a\u011f hizmetlerini (\u00f6rne\u011fin web sunucusu trafi\u011fi) olumsuz etkileyebilir. <code>--bwlimit<\/code> se\u00e7ene\u011fi ile Rsync&#8217;in kullanabilece\u011fi bant geni\u015fli\u011fini kilobayt\/saniye (KB\/s) cinsinden s\u0131n\u0131rlayabilirsiniz. Bu, \u00f6zellikle yo\u011fun saatlerde veya payla\u015f\u0131ml\u0131 a\u011flarda di\u011fer hizmetlerin performans\u0131n\u0131 korumak i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code>rsync -avz --bwlimit=10000 \/home\/kullanici\/veriler\/ user@remote:\/yedekler\/\n<\/code><\/pre>\n<p>Bu komut, Rsync&#8217;in bant geni\u015fli\u011fini yakla\u015f\u0131k 10 MB\/s (10000 KB\/s) ile s\u0131n\u0131rlar. Bu sayede, senkronizasyon i\u015flemi devam ederken sunucunuzun veya a\u011f\u0131n\u0131z\u0131n di\u011fer i\u015flevleri aksamadan \u00e7al\u0131\u015fabilir.<\/p>\n<h3>Checksum Do\u011frulamas\u0131: <code class=\"language-\">--checksum<\/code> (<code>-c<\/code>)<\/h3>\n<p>Rsync, dosyalar\u0131n de\u011fi\u015fip de\u011fi\u015fmedi\u011fini varsay\u0131lan olarak boyutlar\u0131na ve son de\u011fi\u015ftirilme zamanlar\u0131na bakarak kontrol eder. Bu genellikle yeterli ve h\u0131zl\u0131d\u0131r. Ancak, bir dosyan\u0131n i\u00e7eri\u011fi de\u011fi\u015fmi\u015f ancak boyutu ve zaman damgas\u0131 ayn\u0131 kalm\u0131\u015fsa (nadiren de olsa olabilir), Rsync bu de\u011fi\u015fikli\u011fi fark edemeyebilir. Bu gibi durumlarda veya a\u015f\u0131r\u0131 derecede hassas veri b\u00fct\u00fcnl\u00fc\u011f\u00fc gerektiren senaryolarda <code>--checksum<\/code> (<code>-c<\/code>) se\u00e7ene\u011fini kullanabilirsiniz.<\/p>\n<pre><code>rsync -avz --checksum \/hassas_veriler\/ user@remote:\/yedekler\/\n<\/code><\/pre>\n<p><code>--checksum<\/code>, her dosyan\u0131n i\u00e7eri\u011fini okuyarak bir hash de\u011feri (MD5) hesaplar ve bu hash de\u011ferlerini kar\u015f\u0131la\u015ft\u0131r\u0131r. E\u011fer hash de\u011ferleri farkl\u0131ysa, dosyan\u0131n de\u011fi\u015fti\u011fini varsayarak kopyalar. Ancak, bu i\u015flem dosya i\u00e7eri\u011finin tamam\u0131n\u0131 okumay\u0131 gerektirdi\u011finden, \u00f6zellikle b\u00fcy\u00fck dosyalar i\u00e7in \u00e7ok daha yava\u015f olacakt\u0131r. Bu nedenle, yaln\u0131zca kesinlikle gerekti\u011finde kullan\u0131lmas\u0131 tavsiye edilir.<\/p>\n<h3>H\u0131zl\u0131 Boyut Kontrol\u00fc: <code class=\"language-\">--size-only<\/code><\/h3>\n<p>E\u011fer dosyalar\u0131n zaman damgalar\u0131n\u0131n g\u00fcvenilir olmad\u0131\u011f\u0131n\u0131 biliyorsan\u0131z veya sadece boyutlar\u0131na g\u00f6re de\u011fi\u015fiklikleri tespit etmek istiyorsan\u0131z, <code>--size-only<\/code> se\u00e7ene\u011fini kullanabilirsiniz. Bu, Rsync&#8217;in dosyalar\u0131n boyutlar\u0131 farkl\u0131ysa onlar\u0131 kopyalamas\u0131n\u0131, boyutlar\u0131 ayn\u0131ysa ise atlamas\u0131n\u0131 sa\u011flar. Zaman damgalar\u0131n\u0131 kontrol etmedi\u011fi i\u00e7in biraz daha h\u0131zl\u0131 olabilir, ancak dosya i\u00e7eri\u011fi de\u011fi\u015fip boyutu ayn\u0131 kalan dosyalar\u0131 g\u00f6zden ka\u00e7\u0131rabilir.<\/p>\n<pre><code>rsync -avz --size-only \/kaynak\/dizin\/ user@remote:\/hedef\/dizin\/\n<\/code><\/pre>\n<h3>SSH Anahtarlar\u0131 ile Parola Girmeden Rsync Kullan\u0131m\u0131<\/h3>\n<p>Otomatik yedekleme betikleri veya s\u0131k yap\u0131lan senkronizasyonlar i\u00e7in her seferinde parola girmek verimsizdir. SSH anahtarlar\u0131 kullanarak parola girmeden g\u00fcvenli bir \u015fekilde Rsync yapabilirsiniz. Bunun i\u00e7in, yerel makinenizde bir SSH anahtar \u00e7ifti olu\u015fturman\u0131z ve genel anahtar\u0131n\u0131z\u0131 uzak sunucudaki <code>~\/.ssh\/authorized_keys<\/code> dosyas\u0131na eklemeniz gerekir.<\/p>\n<pre><code><div class=\"expert-tip\">\n  Uzman \u0130pucu: SSH anahtarlar\u0131, Rsync otomasyonunun temelidir. G\u00fcvenli\u011finizi art\u0131rmak i\u00e7in anahtar\u0131n\u0131z\u0131 bir parola (passphrase) ile koruyun.\n<\/div>\n# Yerel makinede anahtar olu\u015fturma (e\u011fer yoksa)\nssh-keygen -t rsa -b 4096\n\n# Genel anahtar\u0131 uzak sunucuya kopyalama\nssh-copy-id user@remote_server.com\n\n# Art\u0131k parola sormadan Rsync yapabilirsiniz\nrsync -avz \/yerel\/dizin\/ user@remote_server.com:\/uzak\/dizin\/\n<\/code><\/pre>\n<p>Bu y\u00f6ntem, Rsync komutlar\u0131n\u0131z\u0131 Cron i\u015fleri gibi zamanlanm\u0131\u015f g\u00f6revlere eklemenize olanak tan\u0131r, b\u00f6ylece yedeklemeleriniz tamamen otomatik hale gelir.<\/p>\n<h3>Rsync Daemon Modu ve Performans<\/h3>\n<p>\u00c7o\u011fu senaryoda Rsync, SSH \u00fczerinden \u00e7al\u0131\u015fmak i\u00e7in yeterlidir. Ancak, \u00e7ok say\u0131da istemcinin tek bir sunucuya yedekleme yapt\u0131\u011f\u0131 veya Rsync&#8217;in kendi \u00f6zel portu \u00fczerinden daha hafif bir protokol kullanmak istedi\u011finiz durumlarda Rsync&#8217;i &#8220;daemon&#8221; (arka plan hizmeti) modunda \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu mod, SSH&#8217;nin getirdi\u011fi ek y\u00fck olmadan daha h\u0131zl\u0131 ba\u011flant\u0131lar ve daha esnek yap\u0131land\u0131rmalar sunar (\u00f6rne\u011fin anonim eri\u015fim). Rsync daemon&#8217;u kurmak daha karma\u015f\u0131kt\u0131r ve ayr\u0131 bir yap\u0131land\u0131rma dosyas\u0131 (<code>\/etc\/rsyncd.conf<\/code>) gerektirir. Genellikle sadece \u00f6zel ihtiya\u00e7lar\u0131 olan b\u00fcy\u00fck \u00f6l\u00e7ekli yedekleme altyap\u0131lar\u0131nda tercih edilir.<\/p>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131, Rsync&#8217;i daha verimli, g\u00fcvenli ve esnek bir \u015fekilde kullanman\u0131z\u0131 sa\u011flayarak veri y\u00f6netimi s\u00fcre\u00e7lerinizi daha da optimize etmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>Rsync Kullan\u0131rken Kar\u015f\u0131la\u015f\u0131labilecek Yayg\u0131n Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Rsync, g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7 olsa da, bazen kullan\u0131c\u0131lar belirli hatalarla veya beklenmedik davran\u0131\u015flarla kar\u015f\u0131la\u015fabilirler. Bu sorunlar\u0131n \u00e7o\u011fu, komut se\u00e7eneklerinin yanl\u0131\u015f anla\u015f\u0131lmas\u0131ndan, izin problemlerinden veya a\u011f ba\u011flant\u0131s\u0131 sorunlar\u0131ndan kaynaklan\u0131r. Bu b\u00f6l\u00fcmde, Rsync kullan\u0131rken s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan problemlere ve bunlar\u0131n nas\u0131l \u00e7\u00f6z\u00fclece\u011fine dair pratik bilgiler sunaca\u011f\u0131z.<\/p>\n<h3>\u0130zin Hatalar\u0131 (Permission Denied)<\/h3>\n<p>Rsync ile dosya kopyalarken veya silerken en s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlardan biri izin hatalar\u0131d\u0131r. Bu genellikle, Rsync&#8217;i \u00e7al\u0131\u015ft\u0131ran kullan\u0131c\u0131n\u0131n kaynak veya hedef dizinlere yeterli okuma\/yazma iznine sahip olmamas\u0131ndan kaynaklan\u0131r.<\/p>\n<ul>\n<li><strong>Sorun:<\/strong> <code>rsync: failed to set permissions on \"\/hedef\/dizin\/dosya\" (in hedef): Operation not permitted (1)<\/code> veya <code>Permission denied<\/code>.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong>Hedef dizine yazma izni:<\/strong> Hedef dizine yazma izniniz oldu\u011fundan emin olun. Uzak sunucuda genellikle <code>sudo chmod 755 \/hedef\/dizin<\/code> veya <code>sudo chown kullanici:grup \/hedef\/dizin<\/code> komutlar\u0131yla izinleri d\u00fczeltebilirsiniz.<\/li>\n<li><strong>Kaynak dizinden okuma izni:<\/strong> Kaynak dizindeki dosyalar\u0131 okuma izniniz olmal\u0131.<\/li>\n<li><strong>Sudo Kullan\u0131m\u0131:<\/strong> E\u011fer yerel veya uzak tarafta k\u00f6k (root) ayr\u0131cal\u0131klar\u0131 gerekiyorsa, Rsync komutunu <code>sudo<\/code> ile \u00e7al\u0131\u015ft\u0131rman\u0131z gerekebilir (\u00f6rne\u011fin, <code>sudo rsync -av \/kaynak\/ \/hedef\/<\/code>). Uzak sunucuda <code>root<\/code> kullan\u0131c\u0131s\u0131 olarak ba\u011flanmak, genellikle izin sorunlar\u0131n\u0131 \u00e7\u00f6zer, ancak dikkatli kullan\u0131lmal\u0131d\u0131r.<\/li>\n<li><strong><code>--no-o<\/code>, <code>--no-g<\/code>, <code>--no-p<\/code>:<\/strong> E\u011fer hedef sistemde sahip (owner), grup veya izinleri korumakta sorun ya\u015f\u0131yorsan\u0131z (\u00f6rne\u011fin, farkl\u0131 kullan\u0131c\u0131 ID&#8217;leri), <code>-a<\/code> se\u00e7ene\u011fi i\u00e7indeki bu alt se\u00e7enekleri devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz. \u00d6rne\u011fin, <code>rsync -av --no-o --no-g --no-p ...<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Ba\u011flant\u0131 Sorunlar\u0131 (SSH Hatalar\u0131)<\/h3>\n<p>Uzak sunucularla Rsync yaparken SSH ba\u011flant\u0131 sorunlar\u0131 ya\u015fanabilir.<\/p>\n<ul>\n<li><strong>Sorun:<\/strong> <code>ssh: connect to host ornek.com port 22: Connection refused<\/code> veya <code>Permission denied (publickey,password)<\/code>.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong>Uzak sunucunun a\u00e7\u0131k ve eri\u015filebilir olmas\u0131:<\/strong> Uzak sunucunun \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve a\u011f\u0131n\u0131zdan eri\u015filebilir oldu\u011fundan emin olun (\u00f6rne\u011fin <code>ping ornek.com<\/code>).<\/li>\n<li><strong>SSH servisi \u00e7al\u0131\u015f\u0131yor mu?:<\/strong> Uzak sunucuda SSH servisinin (<code>sshd<\/code>) \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin.<\/li>\n<li><strong>Do\u011fru kullan\u0131c\u0131 ad\u0131 ve parola\/anahtar:<\/strong> Uzak sunucuya ba\u011flanmak i\u00e7in do\u011fru kullan\u0131c\u0131 ad\u0131n\u0131 ve parolay\u0131 veya SSH anahtar\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin olun. <code>ssh user@remote_host<\/code> komutuyla manuel olarak ba\u011flanmay\u0131 deneyerek sorunu te\u015fhis edebilirsiniz.<\/li>\n<li><strong>G\u00fcvenlik Duvar\u0131:<\/strong> Hem yerel hem de uzak sistemdeki g\u00fcvenlik duvarlar\u0131n\u0131n (firewall) SSH (port 22) trafi\u011fine izin verdi\u011finden emin olun.<\/li>\n<li><strong>SSH portu:<\/strong> E\u011fer SSH farkl\u0131 bir portta \u00e7al\u0131\u015f\u0131yorsa, Rsync komutunda bunu belirtmeniz gerekir (\u00f6rne\u011fin, <code>rsync -avz -e 'ssh -p 2222' \/kaynak\/ user@remote:\/hedef\/<\/code>).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Dosya Silme Hatalar\u0131 (<code class=\"language-\">--delete<\/code> ile)<\/h3>\n<p><code>--delete<\/code> se\u00e7ene\u011fi \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr ve yanl\u0131\u015f kullan\u0131ld\u0131\u011f\u0131nda veri kayb\u0131na yol a\u00e7abilir.<\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Yanl\u0131\u015fl\u0131kla \u00f6nemli dosyalar\u0131n silinmesi.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong>Her zaman <code>--dry-run<\/code> kullan\u0131n:<\/strong> <code>--delete<\/code> se\u00e7ene\u011fini i\u00e7eren herhangi bir Rsync komutunu \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce mutlaka <code>-n<\/code> veya <code>--dry-run<\/code> ile test edin. Bu, Rsync&#8217;in ne yapaca\u011f\u0131n\u0131 size g\u00f6sterecek ancak hi\u00e7bir \u015feyi silmeyecektir.<\/li>\n<li><strong>Do\u011fru kaynak\/hedef yollar\u0131:<\/strong> Kaynak ve hedef dizinlerin do\u011fru oldu\u011fundan ve kaynak dizinin sonunda e\u011fik \u00e7izgi (<code>\/<\/code>) olup olmad\u0131\u011f\u0131n\u0131n beklentinizle e\u015fle\u015fti\u011finden emin olun. Yanl\u0131\u015f bir e\u011fik \u00e7izgi, t\u00fcm hedef dizinin i\u00e7eri\u011fini silmenize neden olabilir.<\/li>\n<li><strong>Yedekleme stratejisi:<\/strong> Kritik veriler i\u00e7in <code>--delete<\/code> kullanmadan \u00f6nce her zaman ayr\u0131 bir yedekleme bulundurun veya art\u0131ml\u0131 yedekleme stratejileri (<code>--link-dest<\/code>) ile eski s\u00fcr\u00fcmleri koruyun.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Yol Sonundaki E\u011fik \u00c7izgi (<code>\/<\/code>) \u00d6nemi<\/h3>\n<p>Bu, Rsync&#8217;in en \u00e7ok kafa kar\u0131\u015ft\u0131ran ve hata yap\u0131lan noktalar\u0131ndan biridir.<\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Kopyalanan dizin yap\u0131s\u0131n\u0131n beklentinizden farkl\u0131 olmas\u0131 (\u00f6rne\u011fin, <code>\/hedef\/dizin\/kaynak_dizin\/<\/code> yerine <code>\/hedef\/dizin\/dosya1<\/code>).<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong>Kaynak dizin sonunda <code>\/<\/code> var:<\/strong> <code>rsync \/kaynak_dizin\/ \/hedef_dizin\/<\/code> komutu, <code>kaynak_dizin<\/code>&#8216;in <strong>i\u00e7eri\u011fini<\/strong> <code>hedef_dizin<\/code>&#8216;e kopyalar.<\/li>\n<li><strong>Kaynak dizin sonunda <code>\/<\/code> yok:<\/strong> <code>rsync \/kaynak_dizin \/hedef_dizin\/<\/code> komutu, <code>kaynak_dizin<\/code>&#8216;in <strong>kendisini<\/strong> <code>hedef_dizin<\/code>&#8216;in i\u00e7ine kopyalar (yani <code>\/hedef_dizin\/kaynak_dizin\/<\/code> olu\u015fur).<\/li>\n<li><strong>Her zaman test edin:<\/strong> Hangi davran\u0131\u015f\u0131n istedi\u011finiz oldu\u011funu anlamak i\u00e7in <code>--dry-run<\/code> ile test yap\u0131n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Performans Sorunlar\u0131 (Yava\u015f Transferler)<\/h3>\n<p>Rsync&#8217;in beklenenden yava\u015f \u00e7al\u0131\u015fmas\u0131 birka\u00e7 nedene ba\u011fl\u0131 olabilir.<\/p>\n<ul>\n<li><strong>Sorun:<\/strong> Rsync transferleri \u00e7ok yava\u015f.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong>\n<ul>\n<li><strong><code>-z<\/code> (s\u0131k\u0131\u015ft\u0131rma) kullan\u0131n:<\/strong> \u00d6zellikle metin tabanl\u0131 dosyalar i\u00e7in bant geni\u015fli\u011fini azaltarak h\u0131z\u0131 art\u0131rabilir. Ancak, zaten s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyalar (ZIP, JPG, MP4) i\u00e7in gereksizdir ve CPU y\u00fck\u00fcn\u00fc art\u0131rabilir.<\/li>\n<li><strong><code>--bwlimit<\/code> kontrol\u00fc:<\/strong> Yanl\u0131\u015fl\u0131kla bir bant geni\u015fli\u011fi s\u0131n\u0131r\u0131 belirleyip belirlemedi\u011finizi kontrol edin.<\/li>\n<li><strong>A\u011f h\u0131z\u0131:<\/strong> A\u011f ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131n\u0131 kontrol edin. Rsync, a\u011f\u0131n kendisinden daha h\u0131zl\u0131 olamaz.<\/li>\n<li><strong><code>--checksum<\/code> kullanmaktan ka\u00e7\u0131n\u0131n:<\/strong> E\u011fer veri b\u00fct\u00fcnl\u00fc\u011f\u00fc i\u00e7in kesinlikle gerekli de\u011filse <code>--checksum<\/code> kullanmay\u0131n, \u00e7\u00fcnk\u00fc bu \u00e7ok fazla disk I\/O ve CPU t\u00fcketir.<\/li>\n<li><strong>Disk I\/O:<\/strong> Hem kaynak hem de hedef disklerin I\/O performans\u0131n\u0131n iyi oldu\u011fundan emin olun. \u00d6zellikle HDD&#8217;ler \u00fczerinde \u00e7ok say\u0131da k\u00fc\u00e7\u00fck dosya kopyalamak yava\u015f olabilir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Bu yayg\u0131n sorunlar\u0131 ve \u00e7\u00f6z\u00fcmlerini bilmek, Rsync ile \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z engelleri daha h\u0131zl\u0131 a\u015fman\u0131za ve daha sorunsuz bir deneyim ya\u015faman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n, <code>--dry-run<\/code> se\u00e7ene\u011fi en iyi dostunuzdur!<\/p>\n<h2>Sonu\u00e7: Rsync ile Veri Y\u00f6netiminde Uzmanla\u015f\u0131n<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Rsync&#8217;in temelden ileri d\u00fczeye kadar bir\u00e7ok \u00f6zelli\u011fini ve kullan\u0131m senaryosunu inceledik. Rsync&#8217;in sadece bir dosya kopyalama arac\u0131 olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda veri senkronizasyonu, yedekleme ve da\u011f\u0131t\u0131m g\u00f6revlerinizde size zaman, kaynak ve g\u00fcvenilirlik sa\u011flayan g\u00fc\u00e7l\u00fc ve esnek bir yard\u0131mc\u0131 program oldu\u011funu g\u00f6rd\u00fck. Delta transfer algoritmas\u0131 sayesinde, a\u011f bant geni\u015fli\u011finden tasarruf ederken, ar\u015fiv modu ile dosya \u00f6zelliklerini koruyarak veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamas\u0131, Rsync&#8217;i modern veri y\u00f6netimi d\u00fcnyas\u0131nda vazge\u00e7ilmez k\u0131lmaktad\u0131r.<\/p>\n<p>Yerelden uzak dizinlere g\u00fcvenli bir \u015fekilde nas\u0131l senkronizasyon yapaca\u011f\u0131n\u0131z\u0131, SSH ile entegrasyonun \u00f6nemini ve <code>--delete<\/code> gibi kritik se\u00e7eneklerin dikkatli kullan\u0131m\u0131n\u0131 \u00f6\u011frendiniz. Ayr\u0131ca, <code>--link-dest<\/code> ile art\u0131ml\u0131 yedekleme stratejileri olu\u015fturarak disk alan\u0131ndan nas\u0131l tasarruf edebilece\u011finizi ve <code>--exclude<\/code>\/<code>--include<\/code> se\u00e7enekleriyle yedekleme s\u00fcre\u00e7lerinizi nas\u0131l filtreleyebilece\u011finizi de ke\u015ffettiniz. \u0130leri d\u00fczey ipu\u00e7lar\u0131 b\u00f6l\u00fcm\u00fcnde, <code>--bwlimit<\/code> ile bant geni\u015fli\u011fi s\u0131n\u0131rlama, <code>--partial<\/code> ile kesintiye u\u011frayan transferleri s\u00fcrd\u00fcrme ve SSH anahtarlar\u0131yla parola girmeden otomasyon sa\u011flama gibi performans art\u0131r\u0131c\u0131 teknikleri ele ald\u0131k. Son olarak, s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlara ve \u00e7\u00f6z\u00fcmlerine de\u011finerek, Rsync kullan\u0131m\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz engelleri a\u015fman\u0131za yard\u0131mc\u0131 olduk.<\/p>\n<p>Rsync&#8217;in sundu\u011fu bu geni\u015f \u00f6zellik yelpazesi, ister bireysel bir kullan\u0131c\u0131 olun isterse b\u00fcy\u00fck bir kurumsal altyap\u0131y\u0131 y\u00f6netiyor olun, veri y\u00f6netimi ihtiya\u00e7lar\u0131n\u0131za uygun \u00e7\u00f6z\u00fcmler sunar. Geli\u015ftirme ortamlar\u0131n\u0131n senkronizasyonundan sunucu yedeklemelerine, web sitesi da\u011f\u0131t\u0131m\u0131ndan b\u00fcy\u00fck veri k\u00fcmelerinin ta\u015f\u0131nmas\u0131na kadar pek \u00e7ok alanda Rsync&#8217;i etkin bir \u015fekilde kullanabilirsiniz. Bu rehberdeki bilgileri uygulayarak, Rsync&#8217;i sadece kullanmay\u0131 de\u011fil, ayn\u0131 zamanda onunla veri y\u00f6netimi s\u00fcre\u00e7lerinizde uzmanla\u015fmay\u0131 da ba\u015faracaks\u0131n\u0131z. Unutmay\u0131n, d\u00fczenli pratik ve <code>--dry-run<\/code> se\u00e7ene\u011fini s\u0131k\u00e7a kullanma al\u0131\u015fkanl\u0131\u011f\u0131, Rsync ile \u00e7al\u0131\u015f\u0131rken en iyi sonu\u00e7lar\u0131 alman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Rsync sadece Linux&#8217;ta m\u0131 \u00e7al\u0131\u015f\u0131r?<\/strong><\/p>\n<p>Hay\u0131r, Rsync Unix tabanl\u0131 sistemler i\u00e7in tasarlanm\u0131\u015f olsa da, macOS&#8217;ta varsay\u0131lan olarak bulunur ve Windows&#8217;ta WSL (Windows Subsystem for Linux) veya Cygwin gibi ara\u00e7lar arac\u0131l\u0131\u011f\u0131yla kullan\u0131labilir. Bu sayede, farkl\u0131 i\u015fletim sistemleri aras\u0131nda da Rsync ile senkronizasyon yapabilirsiniz.<\/p>\n<p><strong>2. Rsync ile senkronizasyon ne kadar g\u00fcvenlidir?<\/strong><\/p>\n<p>Rsync, varsay\u0131lan olarak SSH (Secure Shell) protokol\u00fc \u00fczerinden \u00e7al\u0131\u015ft\u0131\u011f\u0131nda olduk\u00e7a g\u00fcvenlidir. SSH, t\u00fcm veri transferini \u015fifreleyerek yetkisiz eri\u015fimi engeller. E\u011fer Rsync&#8217;i kendi daemon modunda kullan\u0131yorsan\u0131z, ek g\u00fcvenlik \u00f6nlemleri (\u00f6rne\u011fin, VPN veya g\u00fcvenlik duvar\u0131 kurallar\u0131) alman\u0131z gerekebilir.<\/p>\n<p><strong>3. Rsync komutunu yanl\u0131\u015f yazarsam verilerim silinir mi?<\/strong><\/p>\n<p>Evet, \u00f6zellikle <code>--delete<\/code> se\u00e7ene\u011fini yanl\u0131\u015f kaynak veya hedef yollarla kulland\u0131\u011f\u0131n\u0131zda veri kayb\u0131 riski vard\u0131r. Bu nedenle, herhangi bir Rsync komutunu, \u00f6zellikle de dosya silme veya de\u011fi\u015ftirme potansiyeli olanlar\u0131, her zaman <code>--dry-run<\/code> (<code>-n<\/code>) se\u00e7ene\u011fi ile test etmeniz \u015fiddetle tavsiye edilir. Bu, komutun ne yapaca\u011f\u0131n\u0131 size g\u00f6sterir ancak ger\u00e7ekte hi\u00e7bir de\u011fi\u015fiklik yapmaz.<\/p>\n<p><strong>4. Rsync ile b\u00fcy\u00fck dosyalar\u0131 senkronize etmek ne kadar s\u00fcrer?<\/strong><\/p>\n<p>B\u00fcy\u00fck dosyalar\u0131n senkronizasyon s\u00fcresi, dosya boyutuna, a\u011f ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ve kaynak ile hedef disklerin I\/O performans\u0131na ba\u011fl\u0131d\u0131r. Rsync&#8217;in delta transfer algoritmas\u0131 sayesinde, dosyan\u0131n sadece de\u011fi\u015fen k\u0131s\u0131mlar\u0131 aktar\u0131ld\u0131\u011f\u0131 i\u00e7in, ilk senkronizasyondan sonraki g\u00fcncellemeler genellikle \u00e7ok daha h\u0131zl\u0131d\u0131r. <code>--progress<\/code> se\u00e7ene\u011fi ile tahmini kalan s\u00fcreyi g\u00f6rebilirsiniz.<\/p>\n<p><strong>5. Rsync ve SCP aras\u0131ndaki temel fark nedir?<\/strong><\/p>\n<p>Hem Rsync hem de SCP (Secure Copy Protocol) dosyalar\u0131 SSH \u00fczerinden g\u00fcvenli bir \u015fekilde aktarabilir. Ancak temel fark, Rsync&#8217;in &#8220;ak\u0131ll\u0131&#8221; olmas\u0131d\u0131r. SCP, her seferinde t\u00fcm dosyay\u0131 ba\u015ftan sona kopyalar. Rsync ise, kaynak ve hedefteki dosyalar\u0131 kar\u015f\u0131la\u015ft\u0131r\u0131r ve sadece de\u011fi\u015fen k\u0131s\u0131mlar\u0131 (delta transfer) aktar\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck dosyalar\u0131n veya \u00e7ok say\u0131da dosyan\u0131n s\u0131k s\u0131k g\u00fcncellendi\u011fi durumlarda Rsync&#8217;i SCP&#8217;den \u00e7ok daha verimli ve h\u0131zl\u0131 hale getirir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Rsync ile Yerel ve Uzak Dizinleri Senkronize Etme Rehberi Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r.&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-31226","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?<\/title>\n<meta name=\"description\" content=\"Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync&#039;i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync&#039;in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?\" \/>\n<meta property=\"og:description\" content=\"Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync&#039;i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync&#039;in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-07T09:21:41+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"30 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?\",\"datePublished\":\"2025-10-07T09:21:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\"},\"wordCount\":5037,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\",\"name\":\"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-07T09:21:41+00:00\",\"description\":\"Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync'i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync'in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?","description":"Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync'i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync'in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/","og_locale":"tr_TR","og_type":"article","og_title":"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?","og_description":"Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync'i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync'in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.","og_url":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-07T09:21:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"30 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?","datePublished":"2025-10-07T09:21:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/"},"wordCount":5037,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/","url":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/","name":"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-07T09:21:41+00:00","description":"Rsync, dosya senkronizasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Rsync'i kullanarak yerel ve uzak dizinleri nas\u0131l etkili bir \u015fekilde senkronize edece\u011finizi, veri yedekleme ve aktar\u0131m i\u015flemlerinizi nas\u0131l optimize edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. \u0130ster bir sunucu y\u00f6neticisi olun, ister bir geli\u015ftirici, isterse sadece \u00f6nemli verilerini yedeklemek isteyen bir kullan\u0131c\u0131; Rsync'in sundu\u011fu olanaklar i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirecektir.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/rsync-nedir-ve-neden-kullanmaliyiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Rsync Nedir ve Neden Kullanmal\u0131y\u0131z?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31226"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31226\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}