Symelo Backups and Migration

  • Версия 1.0.4
  • WordPress 6.4+
  • PHP 7.4+
  • Тествана до 7.1
Backups: състояние, Back up now и всички резервни копия с възстановяване, изтегляне и изтриване.

Описание

Symelo Backups and Migration пази копия на целия ви сайт на сигурно място и ги връща, когато имате нужда от тях.

  • Ръчни и планирани резервни копия на базата данни, плъгините, темите, качените файлове, другите папки в wp-content и самия WordPress. Графици от всеки час до всеки месец, всеки със собствени места за съхранение и правила за пазене.
  • Инкрементални резервни копия: след пълно резервно копие следващите копия съхраняват само променените файлове. Ново пълно копие започва автоматично на всеки няколко дни.
  • Места за съхранение: Google Drive, Dropbox, OneDrive / Microsoft 365, Amazon S3 и S3-съвместими хранилища (Wasabi, DigitalOcean Spaces, Scaleway, MinIO), Cloudflare R2, Backblaze B2, Azure Blob Storage, SFTP, FTP/FTPS и имейл. Изпращайте всяко копие до няколко места наведнъж. При избора на място за съхранение се вижда безплатното пространство при всеки доставчик (например 10 GB безплатно всеки месец при Cloudflare R2 и Backblaze B2 и 15 GB при Google Drive).
  • Възстановяване с едно кликване от таблото, на целия сайт или само на някои части.
  • Възстановяване дори когато сайтът не работи: частен линк за възстановяване връща резервно копие, съхранено на този сървър, без WordPress, а самостоятелният инсталатор разгръща пакет за миграция на празен сървър.
  • Преди актуализации: автоматично резервно копие на базата данни и на актуализирания плъгин или тема преди всяка актуализация на плъгин, тема или ядрото (включително автоматичните актуализации).
  • Миграция и клониране: експортирайте пакет, след което го инсталирайте на нов сървър със самостоятелния инсталатор, импортирайте го в друг сайт или го изтеглете с линк за миграция. URL адресите и пътищата се заменят автоматично, включително в сериализирани данни.
  • Без ограничения в размера: големите пакети се качват на малки части или се копират по FTP в папката за импорт.
  • Криптиране на базата данни или на цялото резервно копие с ваша парола (XChaCha20-Poly1305, Argon2id).
  • Изберете какво да се архивира: компоненти, таблици, изключени папки и типове файлове, максимален размер на файл.
  • Правила за пазене: пазете определен брой копия или копията от определен брой дни, за всеки график и на този сървър. Инкременталните вериги винаги се пазят цели.
  • Щадящ към малки сървъри: цялата работа се извършва на кратки стъпки във фонов режим (не е нужен отворен раздел в браузъра), а скоростта Gentle прави паузи между стъпките.
  • Имейл известия при неуспешно резервно копие, проверки в „Здраве на сайта“, команди за WP-CLI и REST API.

Стандартни формати

Резервните копия са обикновени архиви .tar.gz и SQL файл, компресиран с gzip. Некриптирано резервно копие може да се отвори със стандартни инструменти, без плъгина.

Сигурност

  • Резервните копия се съхраняват в частна папка със случайно име, защитена за Apache, LiteSpeed и IIS. Изтеглянията минават през WordPress след проверка на правата; към самата папка никога няма линк.
  • Всяко резервно копие има манифест с контролни суми SHA-256, подписан с ключ, който знае само този сайт. Възстановяването на копие от друг сайт изисква изрично потвърждение.
  • Архивите се разархивират само в папката на WordPress: абсолютни пътища, .. и символни връзки (symlinks) се отхвърлят.
  • Паролите, ключовете и токените за местата за съхранение се пазят криптирани и никога не се показват отново. SFTP сървърите се разпознават по отпечатъка на ключа на хоста (host key fingerprint).
  • Инструментът за възстановяване, линкът за възстановяване и инсталаторът използват дълги случайни ключове, проверявани за постоянно време, и блокират повторните опити с грешен ключ. Инструментът за възстановяване и инсталаторът се изтриват сами, когато приключат.

За разработчици

Филтри: symelo_backups_capability, symelo_backups_free_tiers, symelo_backups_pace, symelo_backups_dispatch_args, symelo_backups_notification, symelo_backups_http_timeout, symelo_backups_ftp_timeout, symelo_backups_sftp_timeout, symelo_backups_azure_version, symelo_backups_pull_request_args, symelo_backups_pull_allow_private_urls, symelo_backups_more_from_symelo.

Действия: symelo_backups_loaded, symelo_backups_register_destinations, symelo_backups_job_finished, symelo_backups_destination_saved, symelo_backups_destination_deleted, symelo_backups_destination_tested, symelo_backups_cleanup.

Константи: SYMELO_BACKUPS_KEY (ключ за криптиране на съхранените тайни данни, поне 32 знака), SYMELO_BACKUPS_SPEED (fast, normal, gentle).

REST API (за администратори): /wp-json/symelo-backups/v1/ status, backups, backups/{id}, backups/{id}/files/{file} (изтегляне), jobs/current, jobs/{id}, jobs/{id}/cancel, run (стартира графиците, чийто час е настъпил, след това една порция работа), restore, settings, destinations, destinations/{id} (DELETE), destinations/{id}/test, schedules, schedules/{id}, recovery, migration/export, migration/{id}/link, migration/{id}/installer, migration/imports, DELETE migration/imports/{id}, migration/pull, migration/import, migration/domain (смяната на домейна след миграция: GET, POST за пробно изпълнение или за самата смяна, DELETE за запазване на домейна), self-test. Маршрутът oauth в същото пространство от имена е адресът за връщане след вход в Google Drive, Dropbox и OneDrive: той е публичен, защото доставчикът пренасочва към него, и само препраща към wp-admin, където се проверяват влезлият администратор и еднократното състояние на входа.

WP-CLI: wp symelo-backups backup|list|restore|run|schedules|destinations|self-test. wp symelo-backups run стартира планираните резервни копия, чийто час е настъпил, след което обработва чакащите задачи, така че системна cron задача, която го изпълнява на всеки пет минути, може да замени WP-Cron.

Екранни снимки

  1. Backups: състояние, Back up now и всички резервни копия с възстановяване, изтегляне и изтриване.

    Backups: състояние, Back up now и всички резервни копия с възстановяване, изтегляне и изтриване.

  2. Destinations: облачни хранилища с безплатното пространство, което предлага всеки доставчик.

    Destinations: облачни хранилища с безплатното пространство, което предлага всеки доставчик.

  3. Schedules: автоматични резервни копия със собствени места за съхранение и правила за пазене.

    Schedules: автоматични резервни копия със собствени места за съхранение и правила за пазене.

  4. Migration: експорт на пакет или импорт чрез качване, FTP или линк за миграция.

    Migration: експорт на пакет или импорт чрез качване, FTP или линк за миграция.

  5. Switch to the final domain: преминаване към окончателния домейн след миграция: пробно изпълнение, резервно копие на базата данни и след това самата смяна.

    Switch to the final domain: преминаване към окончателния домейн след миграция: пробно изпълнение, резервно копие на базата данни и след това самата смяна.

Документация

Инсталиране

  1. В wp-admin отидете в Разширения → Добавяне на разширение и потърсете „Symelo Backups and Migration“. Натиснете „Инсталиране“, след това „Активиране“. (Или качете .zip файла на плъгина от Разширения → Добавяне на разширение → Качване на разширение, или копирайте папката symelo-backups-and-migration в wp-content/plugins/ по FTP и я активирайте от екрана „Разширения“.)
  2. Отидете в Backups и натиснете Back up now, за да направите първото си резервно копие. То се изпълнява във фонов режим, така че можете да затворите страницата.
  3. В раздела Destinations добавете облачно хранилище или друг сървър, за да се пази копие на всяко резервно копие извън този сървър.
  4. В раздела Schedules настройте автоматични резервни копия с техните места за съхранение и правила за пазене.
  5. В раздела Recovery създайте линка за възстановяване и го пазете в мениджъра си за пароли. С него можете да възстановите резервно копие дори когато WordPress вече не се зарежда.

Изисквания: WordPress 6.4 или по-нова версия, PHP 7.4 или по-нова версия с разширението zlib и права за запис в wp-content/uploads и wp-content. За криптирани резервни копия се препоръчва разширението sodium; SimpleXML е необходимо за S3-съвместими хранилища, Backblaze B2 и Azure, а разширението ftp — за FTP. При мрежа от сайтове (multisite) активирайте плъгина за цялата мрежа или на основния сайт.

Пълното ръководство за потребителя е в раздела Guide на плъгина.

Въпроси

Трябва ли страницата да остане отворена, докато се прави резервно копие?

Не. Резервните копия се правят във фонов режим, на кратки стъпки. Ако сървърът ви блокира заявките към самия себе си и WP-Cron е изключен, изпълнявайте wp symelo-backups run от системна cron задача.

Сайтът ми не работи. Как да го възстановя?

Отворете линка за възстановяване, който сте запазили от Backups → Recovery. Той работи без WordPress и възстановява всяко резервно копие, съхранено на този сървър. Ако нямате линк за възстановяване, инсталирайте нов WordPress и този плъгин, след което възстановете резервно копие от местата си за съхранение или разгърнете пакет за миграция с неговия инсталатор.

Как да преместя сайта си на нов домейн или сървър?

Backups → Migration → Create migration package. След това или качете installer.php и файловете на пакета на новия сървър и отворете инсталатора, или инсталирайте там WordPress и този плъгин и импортирайте пакета (чрез качване, FTP или линк за миграция). URL адресите се заменят автоматично.

Импортирах сайта си на временен адрес. Как да го преместя на истинския домейн?

Когато копието работи, насочете домейна към новия сървър (DNS и HTTPS при хостинга ви), след което натиснете Change domain в известието „This site was migrated from …“ (или Backups → Migration → Switch to the final domain). Пробното изпълнение показва какво ще се промени, можете да направите резервно копие на базата данни с едно кликване, а смяната заменя всички варианти на адреса, включително в сериализирани данни. След това влизате на новия адрес. Ако временният адрес е окончателният, натиснете Keep this domain.

Какво става, ако загубя паролата за криптиране?

Криптираните резервни копия не могат да бъдат възстановени без нея. Никой, включително Symelo LTD, не може да я възстанови. Пазете я в мениджър за пароли.

Изпраща ли плъгинът някакви данни до Symelo LTD?

Не. Резервните копия отиват само до местата за съхранение, които сте настроили. Вижте „Външни услуги“, за да разберете какво получава всяко място за съхранение.

Изтриват ли се резервните копия, когато деинсталирам плъгина?

Не. Резервните копия на този сървър и в местата ви за съхранение никога не се изтриват автоматично. Настройките се премахват само когато е включено „Also delete its data“. Линкът за възстановяване и останалите инструменти за възстановяване винаги се премахват, защото работят без вход.

Външни услуги

Плъгинът работи без никаква външна услуга: всяко резервно копие първо се създава и пази на собствения ви сървър. Той се свързва с външна услуга само след като я добавите като място за съхранение (Backups → Destinations), и то само за да съхранява, изброява, изтегля и изтрива резервните ви копия там или за да влезе в нея. Нищо не се изпраща, преди да настроите място за съхранение, и нищо никога не се изпраща до Symelo LTD: плъгинът няма проследяване, статистика, проверки на лиценз или отдалечен код. Линковете към страниците с цени на доставчиците и към symelo.com са обикновени линкове, които не зареждат нищо, докато не кликнете върху тях.

Какво получава всяко място за съхранение: файловете на резервното копие (криптирани, когато включите криптирането), имената им (ID на резервното копие, например 20261012-191500-full-a1b2c3.files.1.tar.gz) и кратко описание на всяко копие, което никога не се криптира (manifest.json: дата, тип, компоненти, имена на таблиците и броя редове в тях, размери на файловете и контролни суми, както и името и адреса на сайта ви, папката му на сървъра, префикса на таблиците и версиите на WordPress, PHP и базата данни). Резервните копия се съхраняват в папка, кръстена на адреса на сайта ви (например SymeloBackups/example.com/), а заявките към S3-съвместими хранилища, Cloudflare R2, Backblaze B2 и Azure посочват адреса на сайта ви в user agent. Резервното копие съдържа целия ви сайт, включително базата данни, затова избирайте доставчици, на които имате доверие, и включете криптирането, ако не искате те да могат да го четат.

Google Drive (Google)

Съхранява резервните копия във вашия Google Drive чрез приложение в Google Cloud, което създавате вие. Използва се само когато добавите място за съхранение Google Drive.

  • Когато натиснете Connect, браузърът ви отваря страницата за вход на Google (accounts.google.com) с client ID на приложението ви и адреса за вход на този сайт. След това сайтът изпраща вашия client ID, client secret (ако сте въвели такъв) и кода за вход до oauth2.googleapis.com и получава токени за достъп, които при нужда подновява там. При прекъсване на връзката токенът се отнема чрез oauth2.googleapis.com.
  • Резервните копия се качват, изброяват, изтеглят и изтриват чрез Google Drive API (www.googleapis.com) с токена за достъп. Плъгинът прочита името и имейл адреса на акаунта ви, за да покаже кой акаунт е свързан.
  • Общи условия на Google: https://policies.google.com/terms
  • Условия за ползване на Google APIs: https://developers.google.com/terms
  • Политика за поверителност на Google: https://policies.google.com/privacy

Dropbox

Съхранява резервните копия във вашия Dropbox чрез приложение в Dropbox, което създавате вие. Използва се само когато добавите място за съхранение Dropbox.

  • Когато натиснете Connect, браузърът ви отваря страницата за вход на Dropbox (www.dropbox.com) с app key на приложението ви и адреса за вход на този сайт. След това сайтът изпраща вашите app key, app secret (ако сте въвели такъв) и кода за вход до api.dropboxapi.com и получава токени за достъп, които при нужда подновява там. При прекъсване на връзката токенът се отнема чрез api.dropboxapi.com.
  • Резервните копия се качват, изброяват, изтеглят и изтриват чрез api.dropboxapi.com и content.dropboxapi.com с токена за достъп. Плъгинът прочита имейл адреса на акаунта ви, за да покаже кой акаунт е свързан.
  • Условия за ползване на Dropbox: https://www.dropbox.com/terms
  • Политика за поверителност на Dropbox: https://www.dropbox.com/privacy

OneDrive и Microsoft 365 (Microsoft)

Съхранява резервните копия във вашия OneDrive чрез приложение в Microsoft Entra, което създавате вие. Използва се само когато добавите място за съхранение OneDrive.

  • Когато натиснете Connect, браузърът ви отваря платформата за самоличност на Microsoft (login.microsoftonline.com) с client ID на приложението ви и адреса за вход на този сайт. След това сайтът изпраща вашия client ID, client secret (ако сте въвели такъв) и кода за вход до login.microsoftonline.com и получава токени за достъп, които при нужда подновява там.
  • Резервните копия се качват, изброяват, изтеглят и изтриват чрез Microsoft Graph (graph.microsoft.com) с токена за достъп. Плъгинът прочита името и имейл адреса на акаунта ви, за да покаже кой акаунт е свързан.
  • Споразумение за услугите на Microsoft (лични акаунти): https://www.microsoft.com/servicesagreement
  • Продуктови условия на Microsoft (служебни и учебни акаунти): https://www.microsoft.com/licensing/terms/
  • Условия за ползване на Microsoft APIs: https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use
  • Декларация за поверителност на Microsoft: https://privacy.microsoft.com/privacystatement

Amazon S3 (Amazon Web Services)

Съхранява резервните копия във вашия Amazon S3 bucket. Използва се само когато добавите място за съхранение Amazon S3.

  • Резервните копия се качват, изброяват, изтеглят и изтриват в крайната точка на вашия bucket (s3.{region}.amazonaws.com). Заявките съдържат вашия access key ID и се подписват с вашия secret access key; самият таен ключ никога не се изпраща.
  • Клиентско споразумение на AWS: https://aws.amazon.com/agreement/
  • Условия за услугите на AWS: https://aws.amazon.com/service-terms/
  • Известие за поверителност на AWS: https://aws.amazon.com/privacy/

Cloudflare R2 (Cloudflare)

Съхранява резервните копия във вашия Cloudflare R2 bucket. Използва се само когато добавите място за съхранение Cloudflare R2.

  • Резервните копия се качват, изброяват, изтеглят и изтриват в R2 крайната точка на акаунта ви ({account ID}.r2.cloudflarestorage.com или {account ID}.eu.r2.cloudflarestorage.com за юрисдикцията на ЕС). Заявките съдържат вашия R2 access key ID и се подписват с вашия secret access key; самият таен ключ никога не се изпраща.
  • Споразумение за абонамент Self-Serve на Cloudflare: https://www.cloudflare.com/terms/
  • Политика за поверителност на Cloudflare: https://www.cloudflare.com/privacypolicy/

Backblaze B2 (Backblaze)

Съхранява резервните копия във вашия Backblaze B2 bucket. Използва се само когато добавите място за съхранение Backblaze B2.

  • Резервните копия се качват, изброяват, изтеглят и изтриват в крайната точка на вашия bucket (s3.{region}.backblazeb2.com). Заявките съдържат вашия application key ID и се подписват с вашия application key; самият ключ никога не се изпраща.
  • Условия за ползване на Backblaze: https://www.backblaze.com/company/policy/terms-of-service
  • Политика за поверителност на Backblaze: https://www.backblaze.com/company/policy/privacy

Azure Blob Storage (Microsoft)

Съхранява резервните копия в контейнер на вашия Azure storage акаунт. Използва се само когато добавите място за съхранение Azure Blob Storage.

  • Резервните копия се качват, изброяват, изтеглят и изтриват в крайната точка на storage акаунта ви ({account}.blob.core.windows.net или избраната от вас крайна точка на облака Azure China или Azure US Government). Заявките се подписват с ключа на акаунта ви (самият ключ никога не се изпраща) или съдържат въведения от вас SAS токен.
  • Правна информация и условия на Microsoft Azure: https://azure.microsoft.com/support/legal/
  • Продуктови условия на Microsoft: https://www.microsoft.com/licensing/terms/
  • Декларация за поверителност на Microsoft: https://privacy.microsoft.com/privacystatement

Wasabi, DigitalOcean Spaces и Scaleway

Това са готови настройки на мястото за съхранение „Amazon S3 and S3-compatible“. Всяка от тях съхранява резервните копия във вашия bucket при съответния доставчик и се използва само когато добавите S3 място за съхранение с този доставчик. Резервните копия се качват, изброяват, изтеглят и изтриват в крайната точка на bucket-а; заявките съдържат вашия access key ID и се подписват с вашия таен ключ, който никога не се изпраща.

Вашите собствени сървъри: MinIO или друга S3-съвместима крайна точка, SFTP и FTP

Тези места за съхранение се свързват само с адреса, който въведете, обикновено собствения ви сървър или този на хостинг доставчика ви. Те получават файловете на резервните копия и имената им, както и въведените от вас данни за вход: за S3-съвместимите крайни точки — access key ID и подписани заявки, за SFTP — потребителското име и паролата или подпис, направен с вашия SSH ключ (самият ключ никога не се изпраща), за FTP — потребителското име и паролата (изпращат се като обикновен текст, освен ако не изберете FTPS). Важат условията за ползване и политиката за поверителност на този, който поддържа сървъра.

Имейл

Мястото за съхранение Email изпраща всеки файл на резервното копие като прикачен файл, а известията съобщават за неуспешните (или, ако изберете, и за успешните) резервни копия. И двете отиват до адресите, които въведете, с името на сайта ви в темата и линк към екрана на плъгина в текста. Изпращат се с функцията wp_mail() на WordPress, така че ги доставя това, което изпраща имейлите на сайта ви: пощенският сървър на хостинга ви или SMTP или имейл услуга, настроена с друг плъгин. Важат нейните условия за ползване и политика за поверителност.

Линкове за миграция (другият ви сайт)

Когато импортирате пакет с линк за миграция (Backups → Migration), този сайт първо пита стария сайт, чийто адрес е в линка, дали приема линка, след което изтегля файловете на пакета директно от него, с подписани заявки, които изтичат заедно с линка. Заявката посочва адреса на този сайт в стандартния user agent на WordPress. Участват само двата ви сайта; пакетът съдържа базата данни, файловете и wp-config.php на стария сайт.

Заявки към собствения ви сайт

За да работи във фонов режим, сайтът изпраща кратки заявки към самия себе си (wp-admin/admin-ajax.php, удостоверени със случаен токен, уникален за всеки сайт) и използва WP-Cron. „Здраве на сайта“ заявява тестов файл от папката с резервни копия, а плъгинът отваря веднъж инструмента за възстановяване, за да провери дали сървърът ви може да го изпълни. Тези заявки никога не напускат сървъра ви.

Всички версии

  1. 1.0.4ПоследнаWordPress 6.4+ · PHP 7.4+ZIP · 1.3 MB
    • Поправено: смяната на домейна можеше да спре по средата и да остави страницата на „Can't reach the site right now“. Плъгините, които пазят собствено копие на адреса на сайта в настройките си (плъгини за SSL, сигурност, кеширане, многоезичност или „force domain“), получаваха новия адрес, докато сайтът все още работеше на стария, и някои от тях след това пращаха всяка заявка, включително фоновите стъпки на самата смяна, към новия адрес. Таблицата с настройки вече се променя в последната стъпка, заедно с адреса на сайта, в една транзакция на базата данни, така че сайтът продължава да отговаря на стария си адрес, докато всичко не се превключи наведнъж.
    • Подобрено: смяната на домейна завършва на сървъра дори когато страницата загуби връзка с него. Когато приключи, страницата показва „The domain change is complete“ с бутони за отваряне на администрацията и на сайта на новия адрес и обяснява как да достигнете сайта на стария му адрес, ако новият домейн все още не сочи към този сървър. Страницата вече не преминава сама на новия адрес. Докато няма връзка, тя показва бутон „Open the new admin“. След като влезете на новия адрес, разделът Migration показва резултата и журнала на смяната.
    • Поправено: след пробно изпълнение на смяната на домейна страницата можеше да остане на „Finished. Updating the page…“, докато не бъде презаредена ръчно. Сега тя показва резултата сама.

    SHA-256 bd56a38323a1786f62f3c61c0227100f096672af14de5b6f882d26dc74dd6975

  2. 1.0.0WordPress 6.4+ · PHP 7.4+ZIP · 1.2 MB
    • Първа версия.

    SHA-256 b5e93ab880a5e75516459edef2a7b39f06706295456b38eb78d0f8b9e17b396a