بک آپ
با SSH وارد سرور شو و یک بکاپ از دیتابیسها بگیر:
mkdir-p /root/full-backup-datamysqldump \--all-databases \--single-transaction \--routines \--events \--triggers \ > /root/full-backup-data/all-databases.sql
اطلاعات پکیجها و سرویسها رو هم ذخیره کن:
dpkg-query -W > /root/full-backup-data/installed-packages.txtapt-mark showmanual > /root/full-backup-data/manual-packages.txtsystemctl list-unit-files --state=enabled \ > /root/full-backup-data/enabled-services.txt
بعد یک فایل فشرده از تقریباً تمام اطلاعات ماندگار VPS بساز:
tar \--acls \--xattrs \--numeric-owner \-czpf /root/gheimatban-vps-full-backup.tar.gz \--exclude=/proc \--exclude=/sys \--exclude=/dev \--exclude=/run \--exclude=/tmp \--exclude=/mnt \--exclude=/media \--exclude=/lost+found \--exclude=/swapfile \--exclude=/var/lib/mysql \--exclude=/root/gheimatban-vps-full-backup.tar.gz \ /
این فایل شامل چیزهایی مثل اینها میشه:
/var/www/etc/nginx/etc/systemd/etc/letsencrypt/root/home/opt/usrتنظیمات PHPپروژههای NodeWordPress / ElementorUploads.envCertificateهاو Dump کامل دیتابیسها
بعد چک کن:
ls-lh /root/gheimatban-vps-full-backup.tar.gz
حالا دقیقاً از همین FileZilla
همون صفحهای که الان عکسش رو فرستادی، سمت چپ Server روی /root هستی.
بعد از ساختهشدن فایل، Refresh کن. باید ببینی:
gheimatban-vps-full-backup.tar.gz
سمت راست FileZilla برو مثلاً:
D:\Gheimatban Backup\
بعد فایل gheimatban-vps-full-backup.tar.gz رو از سمت Server بکش بنداز سمت کامپیوتر.
ری استور روی سرور جدید
بهتره VPS ایران رو هم Debian 13 x86_64 بگیری تا محیطش تا جای ممکن شبیه سرور فعلی باشه. Debian 13 در حال حاضر MariaDB 11.8.6 داره که با نسخه فعلی سرورت همخوانه.
فرض کنیم IP سرور جدید این باشه:
NEW_IP
و فایل روی دسکتاپ ویندوز باشه:
C:\Users\Iman\Desktop\gheimatban-vps-full-backup.tar.gz
اول از PowerShell:
scp"C:\Users\Iman\Desktop\gheimatban-vps-full-backup.tar.gz"root@NEW_IP:/root/
بعد:
ssh-oServerAliveInterval=20-oServerAliveCountMax=6root@NEW_IP
چون SSH ممکنه قطع بشه، اولین کار:
apt updateapt install -y tmuxtmux new -s restore
حالا حتی اگر SSH قطع شد، Restore ادامه پیدا میکنه.
نصب نرمافزارهای پایه
داخل VPS:
apt updateapt install -y \ ca-certificates \curl \ xz-utils \ tar \ gzip \ unzip \ rsync \git \ nginx \ mariadb-server \ php-fpm \ php-cli \ php-mysql \ php-curl \ php-gd \ php-mbstring \ php-xml \ php-zip \ certbot \ python3-certbot-nginx
نصب دقیق Node.js فعلی
سرور فعلیمون Node 22.23.2 داره. نسخه رسمی Linux x64 همین نسخه از سایت Node موجوده.
برای اینکه محیط جدید تقریباً عین قبلی باشه:
cd /tmpcurl-fLO https://nodejs.org/dist/v22.23.2/node-v22.23.2-linux-x64.tar.xz
Hash رسمی:
echo"d60acfe00a2932254bb0ad20e01b0d74397a0875595de719654b214f4b03f307 node-v22.23.2-linux-x64.tar.xz" \ | sha256sum -c-
باید بگه:
OK
بعد:
mkdir-p /opt/nodetar -xJf node-v22.23.2-linux-x64.tar.xz \-C /opt/node
Symlinkها:
ln-sfn /opt/node/node-v22.23.2-linux-x64/bin/node /usr/local/bin/nodeln-sfn /opt/node/node-v22.23.2-linux-x64/bin/npm /usr/local/bin/npmln-sfn /opt/node/node-v22.23.2-linux-x64/bin/npx /usr/local/bin/npx
چک:
node-vnpm-v
باید Node این باشه:
v22.23.2
باز کردن بکاپ در یک محیط امن
مستقیم روی / Extract نکن.
mkdir-p /restore/gheimatban
بعد:
tar \--acls \--xattrs \--numeric-owner \-xzpf /root/gheimatban-vps-full-backup.tar.gz \-C /restore/gheimatban
حالا مثلاً:
ls-lah /restore/gheimatban/var/www
و:
ls-lah /restore/gheimatban/root/full-backup-data
باید پروژهها و all-databases.sql رو ببینی.
برگرداندن پروژهها و سایتها
کل /var/www:
rsync -aHAX--numeric-ids \ /restore/gheimatban/var/www/ \ /var/www/
این شامل Backend، Super Admin و فایلهای PHP/WordPress/Elementor موجود در /var/www میشه.
برگرداندن Nginx
rsync -aHAX--numeric-ids \ /restore/gheimatban/etc/nginx/ \ /etc/nginx/
SSLهای Let’s Encrypt:
if [ -d /restore/gheimatban/etc/letsencrypt ]; then rsync -aHAX--numeric-ids \ /restore/gheimatban/etc/letsencrypt/ \ /etc/letsencrypt/fi
Firebase و تنظیمات اختصاصی قیمتبان:
if [ -d /restore/gheimatban/etc/gheimatban ]; then rsync -aHAX--numeric-ids \ /restore/gheimatban/etc/gheimatban/ \ /etc/gheimatban/fi
اگر VPS جدید هم Debian 13 باشه، تنظیمات PHP رو هم میتونیم برگردونیم:
if [ -d /restore/gheimatban/etc/php ]; then rsync -aHAX--numeric-ids \ /restore/gheimatban/etc/php/ \ /etc/php/fi
برگرداندن سرویسهای قیمتبان
فایلهای systemd اختصاصی:
find /restore/gheimatban/etc/systemd/system \-maxdepth1 \ \( -name'gheimatban*.service'-o-name'gheimatban*.timer' \) \-execcp-a {} /etc/systemd/system/ \;
بعد:
systemctl daemon-reload
GitHub SSH Keyها
اگر سرور قبلی برای Pull از GitHub کلید SSH داشته:
if [ -d /restore/gheimatban/root/.ssh ]; then rsync -aHAX \ /restore/gheimatban/root/.ssh/ \ /root/.ssh/fi
بعد:
chmod700 /root/.ssh
برگرداندن MariaDB
اول:
systemctl enable --now mariadb
چک نسخه:
mariadb --version
بعد دیتابیس کامل:
mariadb \ < /restore/gheimatban/root/full-backup-data/all-databases.sql
این روش استاندارد Restore برای Dump ساختهشده توسط mariadb-dumpـه.
بعد:
systemctl restart mariadb
و چک:
mariadb -e"SHOW DATABASES;"
باید دیتابیس gheimatban و دیتابیس سایت PHP/WordPress رو ببینی.
Build کردن Backend
cd /var/www/gheimatban-server
بعد:
npm cinpm run typechecknpm testnpm run build
اگر همه پاس شد:
systemctl enable gheimatbansystemctl restart gheimatban
چک:
systemctl status gheimatban --no-pager
و:
curl-fsS http://127.0.0.1:4000/health
Build کردن Super Admin
cd /var/www/gheimatban-super-admin
بعد:
npm cinpm test
چون npm test خودش Build هم میگیره.
بعد:
systemctl enable gheimatban-super-adminsystemctl restart gheimatban-super-admin
چک:
systemctl status gheimatban-super-admin --no-pager
پاکسازی خودکار تصاویر
Timer رو هم دوباره فعال کن:
systemctl enable --now gheimatban-media-cleanup.timer
چک:
systemctl status gheimatban-media-cleanup.timer --no-pager
PHP / Elementor
اول ببین اسم PHP-FPM چیه:
systemctl list-unit-files | grep-E'^php.*-fpm\.service'
مثلاً اگر خروجی:
php8.4-fpm.service
بود:
systemctl restart php8.4-fpm
بعد Nginx رو قبل از Restart تست کن:
nginx -t
اگر گفت:
syntax is oktest is successful
اون وقت:
systemctl restart nginx
چک نهایی سرویسها
systemctl status mariadb --no-pagersystemctl status nginx --no-pagersystemctl status gheimatban --no-pagersystemctl status gheimatban-super-admin --no-pager
و PHP:
systemctl status php8.4-fpm --no-pager
اگر اسمش چیز دیگه بود همون اسم واقعی رو بزن.
بعد DNS دامنهها رو از IP آلمان به IP ایران تغییر میدیم و API و سایتها رو از بیرون تست میکنیم.
وقتی مطمئن شدیم همهچیز سالمه
فایل موقت Backup روی VPS جدید رو پاک میکنیم:
rm-f /root/gheimatban-vps-full-backup.tar.gz
و پوشه Extract موقت:
rm-rf /restore/gheimatban
نسخهای که روی کامپیوتر خودت داری رو طبیعتاً نگه میداری.