=== Yedekalma — Yedek Alma, Geri Yükleme ve Taşıma ===
Contributors: kamkactemha
Tags: yedek alma, yedekleme, backup, site taşıma, virüs temizleme
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.68.2
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

WordPress yedekleme eklentisi: site ve veritabanı yedek alma, tek tıkla geri yükleme, site taşıma ve virüs temizleme. Tamamen ücretsiz.

== Description ==

Yedekalma, **WordPress yedekleme** işini tek ekranda toplayan **ücretsiz bir yedek alma eklentisidir**. Tek tıkla sitenizin **tam yedeğini** alır — dosyalar *ve* veritabanı — ve aynı ekrandan **geri yükler**. Ayrıca **WordPress site taşıma** (yeni sunucu veya yeni alan adı) yapar ve **virüs / zararlı yazılım taraması** ile bulaşmış dosyaları temizler. Yedekleme, geri yükleme, taşıma ve güvenlik tek eklentide toplandığı için her iş için ayrı bir araca ihtiyacınız olmaz.

Her şey kendi sunucunuzda çalışır. Hesap, kayıt veya API anahtarı gerekmez: kurun, etkinleştirin, **Yedek Al**'a basın. **Yedek dosyalarınız kendi hostingunuzda kalır** ve dilediğiniz zaman ZIP olarak indirebilirsiniz.

= Neler yapar? =

* **Site yedekleme** — tema, eklenti ve yüklemeler dahil tüm dosyalar.
* **Veritabanı yedekleme** — gzip sıkıştırmalı MySQL dökümü (`.sql.gz`), büyük siteler için uygun.
* **Paylaşımlı hostingde çalışır** — `exec()` kapalı ve PHP limitleri dar olsa bile parçalı (zaman dilimli) çalışıp yedeği tamamlar.
* **Tek tıkla geri yükleme** — veritabanı, eklentiler, temalar ve yüklemeler; ya da yalnızca seçtiğiniz parça.
* **Elinizdeki arşivden geri yükleme** — `.zip`, `.sql` veya `.sql.gz` dosyasını sürükleyip bırakın.
* **Site taşıma / alan adı değiştirme** — geri yükleme sırasında site adresi veritabanında otomatik güncellenir.
* **Virüs tarama** — WordPress çekirdeği, eklentiler ve aktif temada kod enjeksiyonu, web shell ve arka kapı arar; bulunanları toplu silebilirsiniz.
* **Kendi bulutunuza gönderim (isteğe bağlı)** — Google Drive, Dropbox (arşiv başına 150 MB), OneDrive, Amazon S3 / S3 uyumlu (B2, Wasabi, R2, MinIO).
* **Zamanlanmış otomatik yedekleme (isteğe bağlı)** — günlük, haftalık, saatlik veya birkaç dakikada bir; saklama kuralı ile.
* **Artımlı yedekleme (isteğe bağlı bulut hizmetiyle)** — ilk tam yedekten sonra yalnızca değişen dosyalar paketlenir (veritabanı her turda tam alınır); dosyaların gerçek değişiklik zamanına bakılır, değişen dosya asla atlanmaz. Tek tıkla alınan yerel yedek her zaman **tam** yedektir.
* **İsteğe bağlı AES-256 şifreleme** — arşiv sitenizde, yalnız sizin bildiğiniz parolayla şifrelenir; parola Yedekalma'da saklanmaz. Parolayı kaybederseniz şifreli yedekler açılamaz.

Ücretsiz bir **yedekleme eklentisi** arıyorsanız: yedekleme, geri yükleme, taşıma ve virüs taraması ücretsizdir; hiçbiri "premium" kilidinin arkasında değildir. "(isteğe bağlı)" diye işaretli özellikler Yedekalma bulut hizmetine bağlanmayı gerektirir.

= In English =

Yedekalma is a free **WordPress backup plugin** that takes a one-click **backup** of your entire site — files *and* database — and **restores** it again from the same screen. It also **migrates** your WordPress site to a new host or domain and **scans** it for **malware**. One backup plugin covers backup, restore, migration and security, so you do not need a separate tool for each job.

Everything runs on your own server. No account, no sign-up and no API key: install, activate, click **Take Backup**. Your backup archives stay on your hosting, and you can download them as a ZIP at any time.

Looking for a **free backup plugin** that also does migration and malware scanning without a paywall? Yedekalma gives you a full **WordPress backup**, a **database backup**, one-click **restore**, site **migration** and a **malware scanner** in a single plugin — no premium unlock required for any of it.

= Backup =

* **Full backup** — every file (themes, plugins, uploads) plus the complete database.
* **Database backup** — MySQL dump only, gzip compressed (`.sql.gz`) for large sites.
* **Files backup** — site files only, without the database.
* **Works on shared hosting** — chunked, time-sliced backup that finishes even when `exec()` is disabled and PHP limits are strict.
* **Safe storage** — local backups live in a hardened, non-browsable folder with unguessable file names.

= Restore =

* **One-click restore** of the database, plugins, themes and uploads straight from your dashboard.
* **Restore only what you need** — pick just the database, just uploads, just plugins or the whole site.
* **Restore from an archive you already have** — drag & drop a `.zip`, `.sql` or `.sql.gz` file and restore from it.
* **Integrity checked** — a truncated or corrupt archive is refused instead of half-applied, so a bad file can never damage a working site.
* **SHA-256 verification** of every archive before a restore begins.

= Migration =

* **Move your site to a new host** — download the backup, install Yedekalma on the target server and restore.
* **Change domain safely** — site URL and home URL are rewritten in the database automatically during the restore.
* **New database server** — `wp-config.php` credentials can be updated as part of a restore.
* **Clone your website** to a fresh install for disaster recovery or a redesign.

= Malware scanner =

* **Security scan** of PHP, JS and configuration files across WordPress core, your plugins and the active theme.
* Detects **code injections, web shells and backdoors** using malicious-pattern matching.
* **Persistent results** — the scan report survives page reloads, so you can review it whenever you like.
* **Bulk clean** — select detected files and delete them in one click.
* **Core protection** — WordPress core files are shielded from accidental deletion while planted files can still be removed.

= Optional cloud service — backup to your own cloud storage =

Local backup, restore, migration and the malware scanner are complete on their own and never contact an external server. If you also want **off-site backup** copies, you can connect the optional Yedekalma cloud service (see *External services* below) to:

* **Backup to Google Drive** — stream backups straight to your own Google Drive.
* **Backup to Dropbox and OneDrive** — send archives to your own Dropbox or Microsoft OneDrive account.
* **Backup to Amazon S3** and S3-compatible storage — Backblaze B2, Wasabi, Cloudflare R2 and MinIO.
* Run **scheduled automatic backups** — daily, weekly, hourly or as often as every few minutes for busy sites — with retention rules.
* **Incremental file backup** — after a full backup, only the files that changed since then are packed; real file modification times are compared, so a changed file is never skipped. One-click local backups are always full backups.
* Optionally encrypt archives with **AES-256** on your own server before they leave it, using a passphrase only you know — Yedekalma does not store it, so if you lose it the encrypted backups cannot be opened.

= Languages =

Yedekalma ships with English, Turkish (Türkçe), German, Russian and Arabic translations.

== External services ==

This plugin can optionally connect to the Yedekalma cloud service (an external SaaS) to perform off-site backup and restore operations, package backups for delivery to your own cloud storage, check subscription state, and monitor backup quota. This connection only happens if you choose to use the cloud service (by entering an API token, by clicking the optional "Connect with Google" button, by clicking the optional "register this site" button, or by sending a support request from the Support screen — all described below); the plugin's local backup, restore, migration and malware-scanner features work with no external connection at all.

* **Service URL:** https://yedekalma.com
* **Terms of Service:** https://yedekalma.com/legal
* **Privacy Policy:** https://yedekalma.com/legal#privacy
* **Connect with Google (opt-in):** The dashboard shows an optional "Connect with Google" button. It does nothing unless you click it. If you click it, your browser is sent to https://yedekalma.com where you sign in with Google; Yedekalma then creates or finds your account from your Google e-mail address and links this site (identified by its Site URL) to it. Only your e-mail address and the Site URL are used for this; no Google Drive or other Google data permission is requested, and no site content is sent. A one-time connection token is returned to your site and stored encrypted locally.
* **Optional site registration (opt-in):** The dashboard also shows an optional "register this site with Yedekalma" button. It does nothing unless you click it. If you click it, the plugin sends only your Site URL and technical version info (plugin, WordPress, PHP version and locale) to https://yedekalma.com so the site can be listed in your Yedekalma panel; no site content or personal data is sent. If you also enter a notification e-mail, that address and your marketing-consent choice are sent as well. You can ignore the button entirely and every built-in feature still works.
* **Support form (opt-in, no account needed):** The plugin has a **Yedekalma → Support** screen. It sends nothing until you fill it in and press "Send". When you do, the message you typed, the reply e-mail address and name you entered, the chosen category and your Site URL are sent to https://yedekalma.com so the support team can answer you by e-mail. A separate checkbox — shown ticked, and you can untick it — additionally sends technical details of this installation: plugin, WordPress, PHP and MySQL versions, web server, site language, multisite flag, active theme name, the *number* of active plugins, PHP limits (`memory_limit`, `max_execution_time`, `upload_max_filesize`), whether ZipArchive and `exec()` are available, free disk space, whether the backup folder is writable, whether the site is connected to the cloud service, and the date and count of your local backups. The full list is shown on screen before you send it. No site content, database content, passwords, plugin list or user data is sent, and no Yedekalma account is required to use this form.
* **Data Transmission:** When connected (or after opt-in registration), the plugin sends requests to the Yedekalma API to perform secure backup and restore tasks. They contain your API token (or anonymous install id), your Site URL and site title, active plugin features, backup metadata (such as file lists, sizes, and checksums) and technical details of the installation: plugin, WordPress and PHP version, site language, time zone, whether the site is a multisite or runs WooCommerce, and whether automatic updates are enabled for this plugin. When connected, the plugin also sends a connection secret and the address of its own REST endpoint (so the panel can start backups on your site) and a one-way hash of the server's host name and IP address, used only to tell whether two of your sites share the same server; the host name and IP address themselves are not included (as with any web request, the Yedekalma server does see the IP address a request comes from). The site administrator's e-mail address is not sent.

== Installation ==

1. In your WordPress admin, go to **Plugins → Add New**.
2. Search for **Yedekalma**.
3. Click **Install Now**, then **Activate**.
4. Open **Yedekalma** in the admin sidebar.
5. Click **Start without an account** and take your first backup.

Manual installation: upload the `yedekalma` folder to `/wp-content/plugins/` and activate it from the Plugins screen.

== Frequently Asked Questions ==

= WordPress sitemin yedeğini nasıl alırım? =

**Yedekalma → Kontrol Paneli**'ni açın ve **Yedek Al**'a basın. **Tam Yedek** (dosya + veritabanı), **Sadece Dosya** veya **Sadece Veritabanı** seçebilirsiniz. Yedekleme kendi sunucunuzda parça parça çalışır; bittiğinde arşivi ZIP olarak indirebilirsiniz.

= Veritabanı yedeği nasıl alınır? =

**Yedek Al → Sadece Veritabanı** deyin. Sıkıştırılmış bir MySQL dökümü (`.sql.gz`) elde edersiniz; indirebilir veya daha sonra geri yükleyebilirsiniz.

= Yedek alma eklentisi ücretsiz mi? =

Evet. Yedekleme, geri yükleme, taşıma ve virüs taraması hesap açmadan ve ücret ödemeden tam olarak çalışır. İsteğe bağlı Yedekalma bulut hizmeti site dışı (off-site) depolama ekler ve ücretsiz bir başlangıç paketi vardır.

= WordPress site taşıma nasıl yapılır? =

Evet. Yedeği indirin, yeni sunucuda Yedekalma'yı kurun ve arşivden geri yükleyin. Site adresi ve ana sayfa adresi veritabanında otomatik olarak yeni alan adına göre güncellenir.

= Yedekler nerede saklanıyor? =

Varsayılan olarak kendi hostingunuzda, dışarıdan listelenemeyen korumalı bir klasörde ve tahmin edilemez dosya adlarıyla. İsterseniz isteğe bağlı bulut hizmetiyle kendi Google Drive, Dropbox, OneDrive veya S3 alanınıza gönderebilirsiniz — yedeğin içeriği Yedekalma sunucularında tutulmaz.

= Paylaşımlı hostingde çalışır mı? =

Evet. Yedekleme zaman dilimli parçalar halinde ilerler; `exec()` kapalı olsa ve PHP zaman/bellek limitleri dar olsa bile tamamlanır. Sunucu yoğunluk nedeniyle isteği reddederse eklenti bekleyip kaldığı yerden devam eder.

= WordPress virüs temizleme yapar mı? =

Evet. **Yedekalma → Zararlı Yazılım Taraması** ekranından tarama başlatın: WordPress çekirdeği, eklentiler ve aktif tema PHP/JS ve yapılandırma dosyaları için kod enjeksiyonu, web shell ve arka kapı kalıplarına karşı taranır. Bulunan dosyaları tek tıkla toplu silebilirsiniz; WordPress çekirdek dosyaları yanlışlıkla silinmeye karşı korunur. Virüs temizleme ücretsizdir, hesap açmanız gerekmez.

= Otomatik (zamanlanmış) yedekleme var mı? =

Evet, isteğe bağlı bulut hizmetiyle. Günlük, haftalık, saatlik ya da yoğun siteler için birkaç dakikada bir otomatik yedekleme kurabilir, her biri için saklama kuralı tanımlayabilirsiniz. Tek tıkla manuel yedek her zaman ücretsizdir ve zamanlama gerektirmez.

= Büyük siteleri (5 GB, 10 GB) yedekleyebilir mi? =

Evet. Yedekleme küçük zaman dilimlerine bölünerek ilerler ve veritabanı doğrudan gzip sıkıştırmalı döküme akıtılır; böylece PHP süre ve bellek limitlerine takılmadan tamamlanır. Çok büyük siteler için isteğe bağlı bulut hizmetiyle arşivi hostinginizi doldurmadan doğrudan kendi Google Drive veya S3 alanınıza gönderebilirsiniz.

= WooCommerce mağazamı yedekler mi? =

Evet. Tam yedek tüm WordPress veritabanını içerir — WooCommerce siparişleri, ürünler, müşteriler ve ayarlar dosyalarla birlikte kaydedilir. Yoğun mağazalarda isteğe bağlı bulut hizmetiyle sık artımlı yedekleme kurup iki yedek arasındaki yeni siparişleri de koruyabilirsiniz.

= Nasıl destek alabilirim? Üye olmam gerekiyor mu? =

Hayır, üyelik gerekmez. WordPress yönetim panelinizde **Yedekalma → Destek** ekranını açın, sorununuzu yazın ve gönderin. Site adresiniz otomatik olarak eklenir; isterseniz PHP/WordPress sürümü ve sunucu limitleri gibi teknik bilgileri de tek tıkla iletebilirsiniz (ne gönderileceğini göndermeden önce ekranda görürsünüz). Yanıt, yazdığınız e-posta adresine gelir — yedekalma.com hesabınız olmasa bile.

= Yedeklerimi Google Drive'a gönderebilir miyim? =

Evet, isteğe bağlı Yedekalma bulut hizmetiyle. Arşiv sunucunuzdan doğrudan **kendi** Google Drive, Dropbox, OneDrive, Amazon S3 / S3 uyumlu alanınıza aktarılır; Yedekalma bir kopyasını saklamaz.

= Is this backup plugin free? =

Yes. Backup, restore, migration and the malware scanner are fully functional with no account and no payment. The optional Yedekalma cloud service adds off-site storage and has a free tier.

= Is this a good free backup plugin for WordPress? =

Yedekalma is a free WordPress backup plugin that bundles full-site backup, database backup, one-click restore, site migration and a malware scanner — features that many plugins split between free and premium tiers. Everything runs on your own server and needs no account.

= How do I back up my WordPress site? =

Open **Yedekalma → Dashboard** and click **Take Backup**. Choose **Full** (files + database), **Files Only** or **Database Only**. The backup runs in time-sliced chunks on your own server and you can download the archive as a ZIP when it finishes.

= How do I back up my WordPress database? =

Open **Yedekalma → Dashboard**, click **Take Backup** and choose **Database Only**. You get a compressed MySQL dump (`.sql.gz`) that you can download or restore later.

= Can I back up a WooCommerce store? =

Yes. A full backup includes your entire WordPress database — WooCommerce orders, products, customers and settings — together with your files, so your whole store is captured. For very busy stores you can schedule frequent incremental backups through the optional cloud service so new orders are protected between runs.

= Can it back up large sites (5 GB, 10 GB or more)? =

Yes. Backups run in small time-sliced chunks and the database is streamed to a gzip-compressed dump, so large sites finish without hitting PHP time or memory limits. For very large sites, connecting the optional cloud service lets archives stream straight to your own Google Drive or S3 storage instead of filling your hosting disk.

= Does it work on shared hosting, cPanel, Plesk or DirectAdmin? =

Yes. Yedekalma is a pure-PHP plugin with no server dependencies, so it works on any standard WordPress host — shared hosting, cPanel, Plesk, DirectAdmin or a managed platform. It does not need `exec()`, shell access or SSH.

= Does it work on LiteSpeed, Nginx and Apache? =

Yes. The plugin runs inside WordPress itself and does not depend on the web server, so it works the same on LiteSpeed, Nginx, Apache or any other server that runs PHP.

= Can I use it to migrate my site to a new host or domain? =

Yes. Take a full backup, download the ZIP, install Yedekalma on the target site and restore the archive there. The site URL and home URL in the database are updated for the new domain automatically.

= Can I clone my website for disaster recovery? =

Yes. Take a full backup and restore it onto a completely separate install; the site URL is rewritten for the new domain automatically. Your original site is never modified.

= Where are my backups stored? =

In `wp-content/uploads/yedekalma-backups/` on your own server. The folder is protected from directory browsing and the archive names include a random token, so nobody can guess the URL. If you connect optional cloud storage, backups go to your own Google Drive, Dropbox, OneDrive or S3 account instead.

= Can I back up to Google Drive? =

Yes, through the optional Yedekalma cloud service. Backups stream directly from your server to **your own** Google Drive; Yedekalma never keeps a copy.

= Can I back up to Dropbox or OneDrive? =

Yes. With the optional cloud service you can send scheduled backups to your own Dropbox or Microsoft OneDrive account.

= Does it support Amazon S3, Backblaze B2 or Wasabi? =

Yes. The optional cloud service supports Amazon S3 and any S3-compatible storage — Backblaze B2, Wasabi, Cloudflare R2 and MinIO. Uploads use a client-side signed (SigV4) request and your secret key is AES-256 encrypted on your own site, never sent to Yedekalma.

= Does it support scheduled automatic backups? =

Yes, through the optional cloud service. You can schedule automatic backups daily, weekly, hourly or as often as every few minutes for busy sites, each with its own retention rules. One-click manual backups are always available for free without any schedule.

= What is incremental backup and does it support it? =

An incremental backup saves only what changed instead of the whole site, so it stays small and fast. In Yedekalma it is part of the optional cloud service: after a full backup, only the files that changed since then are packed (real file modification times are compared, so a changed file is never skipped) — the database is always exported in full on every run. One-click local backups taken from your dashboard are always full backups.

= Can I encrypt my backups? =

Yes. With the optional cloud service you can turn on AES-256 encryption. Archives are encrypted on your own server before they leave it with a passphrase only you know; Yedekalma does not store the passphrase (it keeps only a one-way check value), so lost passphrases cannot be recovered.

= How does the malware scanner work? =

It scans PHP, JS and configuration files in WordPress core, your plugins and the active theme for malicious patterns, code injections, web shells and backdoors. Results are saved so you can review them later, and you can delete detected files in bulk. Core WordPress files are protected from deletion.

= How do I restore a WordPress backup for free? =

Open **Yedekalma → Backups**, find the backup you want and click **Restore**. You can restore the database, plugins, themes and uploads separately or all at once. You can also drag & drop a `.zip`, `.sql` or `.sql.gz` archive you already have and restore from it — no account and no payment required.

= Can I restore only the database? =

Yes. When restoring, pick the **Database** section on its own and the rest of the site is left untouched. This is handy for rolling back a bad content change without reverting files.

= Can I restore only the uploads, media or a single component? =

Yes. Restore offers each section your backup contains — database, plugins, themes and uploads — so you can restore just your media/uploads, just plugins or any single part instead of the whole site.

= Is there a free WordPress migration plugin here? =

Yes. Yedekalma migrates your WordPress site to a new host or domain for free: take a full backup, download the ZIP, install Yedekalma on the target site and restore. The site URL and home URL are rewritten in the database automatically, and `wp-config.php` credentials can be updated during the restore.

= How can I scan WordPress for malware without a subscription? =

The built-in malware scanner is completely free and needs no account. Open **Yedekalma → Malware Scanner** and start a scan; it checks WordPress core, your plugins and the active theme for injected code, web shells and backdoors, then lets you delete detected files in bulk while protecting core files.

= How often should I back up my WordPress site? =

For most sites a weekly full backup plus a daily database backup is a good baseline; busy or e-commerce sites should back up daily or more often. You can run a one-click backup any time for free, and the optional Yedekalma cloud service adds scheduled automatic backups with retention rules.

= What happens to my backups if I delete the plugin? =

Nothing. Local archives under `wp-content/uploads/yedekalma-backups/` stay where they are unless you remove them yourself, and anything in your own cloud storage stays there too.

= Türkçe destekliyor mu? =

Evet. Yedekalma tamamen Türkçe arayüze sahiptir: site yedekleme, veritabanı yedekleme, yedekten geri yükleme, site taşıma ve virüs/zararlı yazılım taraması işlemlerinin tümünü Türkçe olarak yapabilirsiniz.

= Is Multisite supported? =

Not in version 1 — a separate plugin instance per site is required. Full Multisite support is on the roadmap.

= Is it GDPR / KVKK compliant? =

Yes. The plugin makes no external connection at all unless you deliberately connect the optional cloud service, and explicit consent is collected for that data transfer.

== Screenshots ==

1. Dashboard — one-click full, files-only or database backup; runs on your own server, no account needed.
2. All backups — one-click restore or download, each with size and SHA-256 checksum.
3. Built-in malware scanner — scan WordPress core, plugins and the active theme for injected code, web shells and backdoors.
4. Settings — interface language and safe uninstall data handling.
5. Optional Yedekalma Pro — connect to schedule off-site backups straight to your own cloud (Google Drive, S3, OneDrive, Dropbox) with optional AES-256 encryption.

== Changelog ==

Only the most recent releases are listed here. The full history of every earlier release is in `changelog.txt` in the plugin folder.

= 1.68.2 — 2026-10-15 =
* **Düzeltme (geri yükleme / doğrulama, büyük arşiv):** 1.68.1'de arşiv her 64 MB'lık parça için
  ayrı istekle indiriliyordu; indirme izni yalnız bir kez verildiği için uzun indirmeler yarıda
  reddediliyordu. Artık arşiv tek akışta iner; bağlantı koparsa kaldığı yerden sürer. İzin
  süresi dolarsa panel bunu ayrı bir hata koduyla (`ticket_expired`) görür.
* **Düzeltme (büyük yedek, S3):** yanıtı yolda kaybolan ya da yarım kalan parçalı yükleme artık
  panele bildiriliyor: panel nesnenin hedefte olup olmadığını denetler, yarım oturumu hemen kapatır.
* **Düzeltme (yinelenen yedek):** panel nesneyi hedefte doğrulayıp yedeği kabul ettiğinde eklenti
  artık bunu başarı sayar; iş gereksiz yere yeniden denenip aynı yedeği ikinci kez almaz.
* Geri yükleme/indirme yan dosyaları her çıkışta temizlenir; geçici dosya hatası gerekçesini söyler.

= 1.68.1 — 2026-10-14 =
* **Düzeltme (büyük yedek, S3):** 1.68.0'da 100 MB'tan büyük yedeklerin S3 ve S3-uyumlu
  hedeflere yüklenememesine yol açan hata giderildi. Kesintide yükleme kaldığı yerden sürer;
  yarım kalan yüklemeler masraf çıkarmayacak şekilde kapatılır.
* **İyileştirme (geri yükleme):** büyük yedekler parça parça indirilir, bağlantı koparsa kaldığı
  yerden devam eder; geri yükleme ancak tüm katmanlar doğrulandıktan sonra sitenize yazılır.
* **Güvenlik:** geçici döküm dosyaları yalnız korumalı dizinde üretilir (korumalı dizin yoksa
  yedek, parçalı yolda da, gerekçesini söyleyen bir hatayla durur); şifreli arşivin
  ikinci geçiş yazımı ve döküm tamamlanma damgası daha sıkı denetlenir.
* Tanıtım ekranındaki depolama ve şifreleme metinleri ürünle hizalandı.

= 1.68.0 — 2026-10-13 =
* **Yeni (büyük yedek, S3):** S3 ve S3-uyumlu hedeflerde 100 MB üstü yedek artık parça parça
  (multipart) yükleniyor; 5 GB tek parça sınırı kalktı. Her parça `Content-MD5` taşır, bu yüzden
  Object Lock (WORM) korumalı kovalar da çalışır. Yükleme başarısız olursa yarım oturum iptal
  edilir (kovada faturalanan yetim parça kalmaz). S3 gizli anahtarı yine eklentiye gelmez.
* **Yeni (büyük yedek, Dropbox):** 150 MB üstü yedek, Yedekalma paneli bu özelliği açtıysa
  Dropbox yükleme oturumuyla (parçalı) gönderilir. Kapalıysa sınır panelde yazar.
* **İyileştirme:** kopan bir parça yalnız kendisi yeniden denenir; büyük yedek baştan başlamaz.

= 1.67.0 — 2026-10-13 =
* **Yeni (yedek şifreleme zorunluluğu):** panelde bu site için "AES-256 Şifreleme" açıksa
  eklenti, kendi şifreleme parolanız girilmemişse ya da hesabınızdaki parolayla eşleşmiyorsa
  yedeği ŞİFRESİZ göndermez; yedek açık bir hata koduyla durdurulur
  (`ENC_SITE_KEY_MISSING` / `ENC_SITE_KEY_MISMATCH`). Parola yine yalnız bu sitede (AUTH_KEY
  ile şifreli) saklanır; panele parola gönderilmez, panel yalnız tek yönlü bir doğrulayıcı tutar.

= 1.66.0 — 2026-10-12 =
* **Düzeltme (parçalı yedek, BYOK):** kendi şifreleme anahtarınız açıkken parçalı dosya/tam
  yedeğin yükleme adımına ikinci girişte şifreli arşiv "bozuk" sayılıp siliniyordu. Artık
  arşiv bir kez doğrulanıp mühürlenir; doğrulama ve özet her girişte yeniden hesaplanmaz.
* **Düzeltme:** dilim sonunda arşiv dosyasının kapanışı artık okunuyor; yazılamayan bir dilim
  sessizce "tamam" sayılmaz.
* **Geri yükleme güvenliği:** ek klasör (`__ek_dizin__/`) girdileri web köküne yazılmaz;
  silme döngüsü üç dosya önekini de tanır; parçalı yedek sürerken geri yükleme başlatılamaz;
  `.sql.gz` tamamlanma damgası yalnız satır başında sayılır; hedef dizin oluşturulmadan önce
  site köküne bağlı olduğu doğrulanır.
* **Güvenlik:** "Google ile bağlan" yeni hesap açarken kayıt politikasına uyar; Google bağlantı
  akışı başlatan tarayıcıya bağlanır.
* **Alıcı Modül:** son parçanın yanıtı kaybolursa yükleme baştan gönderilmez. Tek seferde
  gönderilen (küçük) arşivde de yanıt kaybolursa arşivin karşıda yerinde olup olmadığı sorulur.
* **Düzeltme (yedek bütünlüğü):** ekrandan alınan yedekte diske yazılamayan bir dilim artık
  yedeği durdurur; yalnız-dosya yedeği de bitince doğrulanır. Veritabanı dökümü yazılamazsa
  (disk/kota dolu) "başarılı" yedek üretilmez — döküm kapanınca tamamlanma damgası geri okunur.
  Arşiv doğrulaması veritabanını yalnız dosya adıyla değil, dökümün tamamlanma damgasıyla sayar.
* **Düzeltme:** "Doğrula" düğmesi tamamlanma damgasını yalnız satır başında arar (veri içinde
  geçen metin kesik bir dökümü "sağlam" göstermez).
* **Düzeltme:** panelden parça parça süren bir yedek varken WP-Cron, Pro zamanlayıcı ya da
  panel tetiği ikinci bir tam yedek başlatmaz.
* **Güvenlik:** geçici veritabanı dökümlerinin adları tahmin edilemez ve yalnız sahibine
  açıktır; korumasız bir web klasörüne ham döküm yazılmaz.
* **Geri yükleme güvenliği:** iki arşiv veritabanı aynı hedefe ya da bir ek veritabanı sitenin
  kendi veritabanına eşlenmişse geri yükleme hiçbir veritabanına dokunmadan reddedilir.

= 1.65.5 — 2026-10-06 =
* **Düzeltme (başarılı geri yükleme "başarısız" görünüyordu):** sunucunuzda PHP'nin IMAP
  eklentisi yoksa (paylaşımlı hosting'de sık), içinde e-posta OLMAYAN bir yedeğin geri
  yüklemesi — dosyalar ve veritabanı eksiksiz geri gelse bile — "Geri yükleme başarısız
  oldu" diye bitiyordu. Artık arşivde posta yoksa IMAP aranmaz ve sonuç doğru raporlanır.
  Gerçek bir WordPress kurulumunda ölçüldü: 3783/3783 dosya ve veritabanı geri geldi,
  ekran yine de hata gösteriyordu. Postası olan arşivlerde davranış değişmedi.
* **İç düzenleme (davranış değişikliği yok):** eklentinin en büyük dosyası (REST köprüsü,
  8 600+ satır) bölündü. Parçalı yedek çalıştırıcısı ve istemci tarafı geri yükleme kendi
  dosyalarına taşındı; kod satırı satırına aynı kaldı (134 metodun tamamı birebir
  karşılaştırıldı). Yedekleme, geri yükleme ve ayarlarınız etkilenmez.

= 1.65.4 — 2026-09-30 =
* **Düzeltme (büyük arşivler panelde "ulaşılamadı" görünüyordu):** indirme ucu, arşivin
  özetini (md5) her istekte, ilk bayttan ÖNCE baştan sona okuyarak hesaplıyordu ve
  "yalnız ilk 64 KB" (Range) isteğini yok sayıyordu. Panelin 15 saniyelik varlık
  kontrolü 1,5 GB üstü arşivlerde zaman aşımına düşüyor ve yarım saatte bir yeniden
  denendiği için sunucunuz sürekli GB'larca okuma yapıyordu. Özet artık yedek
  oluşturulurken bir kez kaydediliyor; Range istekleri 206 ile yalnız istenen parçayı
  gönderiyor.
* **Düzeltme (geri yüklenemeyen veritabanı yedeği):** parçalı veritabanı dökümünde bir
  adım sert biçimde kesilirse (hosting süre/kaynak sınırı, disk dolu) yarım bir gzip
  parçası kalıyor, sonraki adımlar onun arkasına ekleniyordu. Arşiv "tamamlandı"
  görünüyor ama geri yükleme dökümün sonuna ulaşamayıp reddediyordu. Her adımın yazdığı
  parça artık geri okunup doğrulanıyor; yarım parça kırpılıp adım yeniden alınıyor.
  Tek seferde alınan dökümler ve ek veritabanları da kapanışta geri okunuyor.
* **Düzeltme (Türkçe karakter bozulması):** döküm başlığı her zaman `utf8mb4` yazıyordu;
  veritabanı bağlantısı farklı bir karakter kümesiyle (ör. eski kurulumlarda `latin1`)
  okunduğunda geri yüklenen sitede karakterler bozulabiliyordu. Başlık artık okuma
  bağlantısının gerçek karakter kümesini yazıyor.
* **Düzeltme (bağlantı testi):** ağ teşhisi, özel bir panel adresi tanımlıysa onu değil
  her zaman varsayılan adresi ölçüyordu.

= 1.65.3 — 2026-09-25 =
* **Düzeltme (yedek hiç bitmiyordu):** "Bu sitede sakla" hedefinde arşiv, yedek klasörüne
  **kopyalanıyordu**; taşınması gerekiyordu. Büyük bir arşivin kopyalanması paylaşımlı
  diskte dakikalar sürer, hosting isteği 60 saniyede kestiğinde kopya yarım kalır ve
  sonraki tur sıfırdan başlar — yedek hiç tamamlanmazdı. Ayrıca zirvede arşivin iki tam
  kopyası diskte duruyordu. Artık ek bir depolama hedefi yoksa arşiv taşınıyor (anında).
* **Düzeltme (geri yükleme eksik kalıyordu):** yapılandırma koruması, hedefte o dosya
  **olmasa bile** dosyayı atlıyordu; boş/yeni bir sunucuya geri yüklemede (felaket
  kurtarma, taşıma) dosya hiç yazılmıyor, işlem yine "tamamlandı" görünüyordu. Koruma
  artık yalnız gerçekten var olan bir dosyanın üzerine yazmayı engelliyor. `settings.php`,
  `db.php`, `config.php` gibi genel adlar eklenti/tema klasörlerinde artık yanlışlıkla
  "yapılandırma" sayılmıyor. Korunan yolların listesi sonuç ekranına eklendi.
* **Düzeltme (`.htaccess` / `.user.ini` her derinlikte):** koruma yalnız site kökünde
  geçerliydi; `wp-admin/.htaccess`, `wp-content/.htaccess` ve alt dizinlerdeki
  `.user.ini` dosyaları korumasızdı (`.user.ini` PHP'de dizin bazlı ve özyinelemelidir).
* **Düzeltme (eksik veritabanı dökümü):** birincil anahtarı olmayan tablolar ek
  veritabanı dökümünde `ORDER BY` olmadan sayfalanıyordu; satırlar atlanabiliyor ya da
  iki kez yazılabiliyordu. Bu tablolar artık tek geçişte, eksiksiz dökülüyor.
* **Düzeltme (e-posta envanteri):** zararlı bulunup arşive alınmayan **tek bir ileti**,
  posta kutusunun tamamını "yedeklenmedi" saydırıyordu; geri yükleme eşleme ekranı o
  kutuyu hiç görmüyordu. İleti düzeyindeki atlamalar artık kutuyu düşürmüyor.
* **Güvenlik:** kimlik doğrulaması gerektirmeyen indirme adresinin hız sınırı site
  genelinde tek bir sayaçtı — adresi bilen biri uydurma bir anahtarla sayacı doldurup
  gerçek indirmeleri bir saat boyunca engelleyebiliyordu. Sayaç artık indirme anahtarı
  başına ve yalnızca gerçekten var olan bir anahtar için işletiliyor.
* **Kritik düzeltme (geri yüklenen veritabanında `%` bozuluyordu — WP-510):** eklentinin
  ürettiği her veritabanı dökümünde `%` karakteri rastgele 66 baytlık bir `{…}` dizesine
  dönüşüyordu (WordPress'in `_real_escape()` yer tutucusu dosyaya yazılıyordu). Geri
  yüklenen sitede kalıcı bağlantılar (`/%postname%/` → tüm sayfalar 404), serileştirilmiş
  ayarlar, `100%` gibi CSS değerleri ve Türkçe karakterli adresler bozuluyordu; yedek ve
  geri yükleme yine "başarılı" görünüyordu. Döküm artık yer tutucu eklemeyen kaçış
  kullanıyor; **mevcut (eski) yedekler geri yüklenirken otomatik onarılıyor**.
* **Düzeltme (eksik yedek sessiz kalıyordu — WP-511):** döküm sırasında bir veritabanı
  sorgusu hata verirse (bağlantı koptu, zaman sınırı) tablo o noktada kesiliyor ve dosya
  yine "tamamlandı" damgası alıyordu. Artık yedek görünür biçimde başarısız oluyor.
* **Düzeltme (1 MB'tan uzun satır geri yüklemeyi yarıda bırakıyordu — WP-512):** büyük bir
  ayar/sayfa oluşturucu satırı içe aktarılırken yanlış yerden bölünüyordu; geri yükleme
  sözdizimi hatasıyla duruyor, veritabanı yarı yeni yarı eski kalıyordu.
* **Düzeltme (otomatik güncelleme izni geri yüklemede kapanıyordu — WP-513):** veritabanı
  geri yüklemesi bu eklentinin "otomatik güncelle" ve "etkin" kaydını yedekteki hâline
  döndürüyordu. Artık yalnız bu eklentinin girişi korunuyor; listenin geri kalanına
  dokunulmuyor.
* **Güvenlik (canlı veritabanı yanlışlıkla eziliyordu — RST-510):** "başka veritabanına
  yaz" eşlemesi, yalnız sitenin kendi veritabanına yazılabilen (adsız) dökümde sessizce
  yok sayılıyor ve canlı veritabanının üzerine yazılıyordu. Artık geri yükleme veritabanına
  dokunmadan açık bir hatayla reddediliyor.
* **Düzeltme (artımlı geri yükleme yarıda kalınca — RST-511):** sağlama kaydı eksik katman
  artık İNDİRMEDEN önce topluca reddediliyor; sonraki bir katman hata verirse sonuç "kısmi"
  işaretleniyor ve eklentinin kendi ayarları (yedek klasörü, panel bağlantısı) geri yazılıyor.
* **Düzeltme (paralel geri yükleme — RST-514):** geri yükleme artık yedeklerle aynı çalışma
  kilidini alıyor (meşgulse 409) ve bir "geri yükleme sürüyor" işareti koyuyor; eklentinin
  zamanlanmış yerel yedeği bu sırada ve sonraki 15 dakika içinde yarı geri yüklenmiş siteyi
  arşivlemiyor.
* **Düzeltme (parola değişiminden önceki yedek — RST-515):** panelin gönderdiği yedek
  parolası artık geri yüklemede de kullanılıyor ("Doğrula" yeşil, "Geri Yükle"
  `decrypt_failed` çelişkisi bitti).
* **Düzeltme (hariç tutma — RST-516):** `foto..jpg`, `v1..2/` gibi meşru adlar "geri
  yükleme" hariç tutma listesinden sessizce düşüyordu; kontrol artık yol bölütü bazlı.
* **Temizlik (WP-514):** hiçbir yerden çağrılmayan ve "güncelleme paketleri imza
  doğrulamasından geçiyor" izlenimi veren `Yedekalma_Update_Verify` sınıfı kaldırıldı.
  Güncellemeler WordPress.org üzerinden gelir.

= 1.65.2 — 2026-09-20 =
* **Güvenlik:** yükleme (upload) adresleri artık SSRF doğrulamasından geçiyor. İndirme
  yolu zaten korumalıydı; yükleme yolunda koruma **yazılmış ama hiç çağrılmamıştı**.
* **Düzeltme (site kesintisi riski):** anahtar dizinine yazılan `.htaccess`, Apache 2.2'de
  tanınmayan bir yönerge içeriyordu (sunucu 500 verebilirdi) ve sitenizin mevcut
  `.htaccess` dosyasını koşulsuz eziyordu. Artık 2.2+2.4 uyumlu ve var olan dosyaya
  dokunmuyor.
* **Düzeltme (kaldırma):** eklenti silinirken geride kalan iki geçici veri ailesi
  (`ya_impact_`, `ya_dsz2_`) artık temizleniyor.
* **Düzeltme (zlib kapalı sunucular):** sıkıştırma fonksiyonları yoksa yedekleme artık
  anlaşılır bir hata veriyor; önceden PHP 8'de ölümcül hata ve boş 500 oluyordu.
* **Düzeltme (yedek kaybı, sessiz):** alan adı klasörü `.pl` · `.py` · `.sh` ile biten
  siteler (Polonya, Paraguay, Saint Helena) — bu uzantılar çalıştırılabilir dosya kara
  listesinde de olduğu için klasör adı `blocked_<özet>.dat`a dönüştürülüyordu. Taze
  kurulumda kırılmıyordu ama SÜRÜM GEÇİŞİNDE eski yedekler bulunamaz hâle geliyordu.
  Artık ayrım konuma göre yapılıyor: bir KLASÖR adı çalıştırılamaz, bir DOSYA adı
  çalıştırılabilir — koruma dosya adında aynen sürüyor.
* **Güvenlik (derinlemesine savunma):** çalıştırılabilir uzantı listesine `shtml`, `shtm`
  (SSI etkin sunucuda ayrıştırılır), `cfm`, `cfml`, `jspf`, `xhtml` ve `svg` eklendi.
* **Düzeltme (veri kaybı, önemli):** sembolik bağ (symlink) ile bağlanmış bir KLASÖR yedeğe
  hiç girmiyordu ve bu HİÇBİR sayaca yazılmıyordu — `wp-content/uploads` ayrı diske
  bağlanmış sitelerde medya kütüphanesinin tamamı sessizce yedeğin dışında kalabiliyordu.
  Davranış (bağ izlenmez) korundu, ama artık SAYILIYOR ve panele bildiriliyor.
* **Düzeltme (güvenlik):** kök DIŞINI gösteren sembolik bağlar artık arşive alınmıyor
  (`outside_root`). Önceden komşu bir sitenin dosyası, kök-içi bir adla arşive girebiliyordu.
* **Düzeltme (veri kaybı):** geri yüklemede `autoload`'lı korunan ayarlar siliniyor ve geri
  yazılamıyordu (WordPress'in `alloptions` önbelleği yüzünden `add_option()` sessizce
  başarısız oluyordu). Zararlı yazılım tarama defteri, dil tercihi ve bağlantı ayarları
  bundan etkileniyordu. Artık önbellek düşürülüyor, dönüş kontrol ediliyor ve
  başarısızlık yanıtta bildiriliyor.
* **Düzeltme (geri dönüşsüz):** eklentiyi "yedeklerimi koru" ile kaldırırken, şifreli
  arşivleri açan yedek anahtar (`yedekalma_fallback_enc_key`) siliniyordu. Artık korunuyor.
* **Güvenlik:** kimlik doğrulaması gerektirmeyen indirme ucuna hız sınırı eklendi
  (modülde zaten vardı, eklentiye taşınmamıştı).

== Upgrade Notice ==

= 1.68.2 =
Recommended for everyone on 1.68.1: restoring or verifying large backups no longer fails midway when the download permission expires.

= 1.68.1 =
Required if you back up to S3: fixes large (over 100 MB) S3 uploads that fail in 1.68.0. Restores now verify every layer before writing to your site.

= 1.68.0 =
Recommended if you back up to S3 or Dropbox: archives over 5 GB (S3) and over 150 MB (Dropbox, when enabled by your panel) are now uploaded in parts instead of failing.

= 1.67.0 =
If backup encryption is turned on for this site in the panel, backups are no longer sent unencrypted when the plugin has no passphrase (or a different one): the backup stops with a clear error code instead.

= 1.66.0 =
Recommended for everyone using chunked backups with your own encryption key (the archive could be deleted as "corrupt"), and for safer restores of extra folders. Also fixes Storage Receiver uploads restarting after a lost final response.

= 1.65.5 =
Recommended if your host does not have the PHP IMAP extension: restoring a backup that contains no e-mail was reported as "Restore failed" even though every file and the database had been restored. It is now reported correctly. See the changelog for details.

= 1.65.4 =
Recommended for every install. Large archives stored on this site no longer time out the panel's presence check: the download endpoint now honours Range requests and reads a checksum saved at backup time instead of re-reading the whole archive on every request (on… See the changelog for details.

= 1.65.3 =
URGENT FOR EVERY INSTALL: every database dump made by this plugin turned each `%` character into a random 66-byte `{...}` string, so a restored site lost its permalinks (`/%postname%/` - every page 404), serialized settings, CSS percentages and percent-encoded URLs… See the changelog for details.

= 1.65.2 =
A data-loss fix; recommended for every install, and especially urgent if any part of your site lives on a SYMLINK. Until now a symlinked DIRECTORY was silently dropped from the backup: the scanner does not follow symlinks (to avoid infinite loops), so the whole… See the changelog for details.

