Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

مجھے دن میں دو بار "2C-Bitrix: Site Management" (فائلیں اور mysql ڈیٹا بیس) پر سائٹ کا بیک اپ بنانے اور تبدیلیوں کی تاریخ کو 1 دنوں تک ذخیرہ کرنے کی ضرورت تھی۔

سائٹ 7C-Bitrix: Web Environment انسٹال کے ساتھ CentOS 1 OS چلانے والے VDS پر واقع ہے۔ مزید برآں، اپنی OS سیٹنگز کی بیک اپ کاپی بنائیں۔

کے تقاضے:

  • تعدد - دن میں 2 بار؛
  • پچھلے 90 دنوں کے لیے کاپیاں رکھیں؛
  • اگر ضروری ہو تو، ایک مخصوص تاریخ کے لیے انفرادی فائلوں کو حاصل کرنے کی صلاحیت؛
  • بیک اپ کو VDS کے علاوہ ڈیٹا سینٹر میں محفوظ کیا جانا چاہیے۔
  • کہیں سے بھی بیک اپ تک رسائی حاصل کرنے کی صلاحیت (دوسرا سرور، مقامی کمپیوٹر وغیرہ)۔

ایک اہم نکتہ اضافی جگہ اور سسٹم کے وسائل کے کم سے کم استعمال کے ساتھ تیزی سے بیک اپ بنانے کی صلاحیت تھی۔

یہ پورے سسٹم کو فوری طور پر بحال کرنے کے اسنیپ شاٹ کے بارے میں نہیں ہے، بلکہ فائلوں اور ڈیٹا بیس اور تبدیلیوں کی تاریخ کے بارے میں ہے۔

ماخذ ڈیٹا:

  • XEN ورچوئلائزیشن پر VDS؛
  • OS CentOS 7;
  • 1C-Bitrix: ویب ماحول؛
  • "1C-Bitrix: Site Management" پر مبنی ویب سائٹ، معیاری ورژن؛
  • فائل کا سائز 50 جی بی ہے اور بڑھے گا۔
  • ڈیٹا بیس کا سائز 3 جی بی ہے اور بڑھے گا۔

میں نے فوری طور پر 1C-Bitrix میں بنائے گئے معیاری بیک اپ کو خارج کر دیا۔ یہ صرف چھوٹی سائٹوں کے لیے موزوں ہے، کیونکہ:

  • یہ ہر بار سائٹ کی مکمل کاپی بناتا ہے، اس لیے ہر کاپی فائلوں کے لیے اتنی ہی جگہ لے گی، میرے معاملے میں یہ 50 جی بی ہے۔
  • بیک اپ پی ایچ پی کا استعمال کرتے ہوئے کیا جاتا ہے، جو کہ فائلوں کی اتنی مقدار کے ساتھ ناممکن ہے، یہ سرور کو اوورلوڈ کردے گا اور کبھی ختم نہیں ہوگا۔
  • اور ظاہر ہے، مکمل کاپی کو ذخیرہ کرتے وقت کسی بھی 90 دنوں کی بات نہیں ہو سکتی۔

ہوسٹر جو حل پیش کرتا ہے وہ ایک بیک اپ ڈسک ہے جو VDS جیسے ڈیٹا سینٹر میں واقع ہے، لیکن ایک مختلف سرور پر ہے۔ آپ FTP کے ذریعے ڈسک کے ساتھ کام کر سکتے ہیں اور اپنی اسکرپٹس کا استعمال کر سکتے ہیں، یا اگر ISPManager VDS پر انسٹال ہے، تو اس کے بیک اپ ماڈیول کے ذریعے۔ ایک ہی ڈیٹا سینٹر کے استعمال کی وجہ سے یہ آپشن موزوں نہیں ہے۔

مندرجہ بالا سبھی میں سے، میرے لیے بہترین انتخاب Yandex.Cloud (Object Storage) یا Amazon S3 (Amazon Simple Storage Service) میں میری اپنی اسکرپٹ کا استعمال کرتے ہوئے ایک اضافی بیک اپ ہے۔

اس کی ضرورت ہے:

  • VDS تک جڑ تک رسائی؛
  • نصب دوہری افادیت؛
  • Yandex.Cloud میں اکاؤنٹ۔

اضافی بیک اپ - ایک طریقہ جس میں صرف ڈیٹا جو آخری بیک اپ کے بعد سے تبدیل ہوا ہے آرکائیو کیا جاتا ہے۔

نقل - ایک بیک اپ یوٹیلیٹی جو rsync الگورتھم استعمال کرتی ہے اور Amazon S3 کے ساتھ کام کر سکتی ہے۔

Yandex.Cloud بمقابلہ Amazon S3

اس صورت میں، میرے لیے Yandex.Cloud اور Amazon S3 میں کوئی فرق نہیں ہے۔ Yandex Amazon S3 API کے بڑے حصے کو سپورٹ کرتا ہے، لہذا آپ S3 کے ساتھ کام کرنے کے لیے موجود حلوں کا استعمال کرتے ہوئے اس کے ساتھ کام کر سکتے ہیں۔ میرے معاملے میں ، یہ دوہری افادیت ہے۔

Yandex کا بنیادی فائدہ روبل میں ادائیگی ہو سکتا ہے؛ اگر بہت زیادہ ڈیٹا ہے، تو شرح تبادلہ سے کوئی تعلق نہیں ہوگا۔ رفتار کے لحاظ سے، Amazon کے یورپی ڈیٹا سینٹرز Yandex میں روسی ڈیٹا سینٹرز کے مقابلے کام کرتے ہیں؛ مثال کے طور پر، آپ فرینکفرٹ استعمال کر سکتے ہیں۔ میں نے پہلے اسی طرح کے کاموں کے لیے Amazon S3 استعمال کیا تھا، اب میں نے Yandex کو آزمانے کا فیصلہ کیا۔

Yandex.Cloud کو ترتیب دیا جا رہا ہے۔

1. آپ کو Yandex.Cloud میں ادائیگی کا اکاؤنٹ بنانا ہوگا۔ ایسا کرنے کے لیے، آپ کو اپنے Yandex اکاؤنٹ کے ذریعے Yandex.Cloud میں لاگ ان کرنا ہوگا یا ایک نیا بنانا ہوگا۔

2. ایک "کلاؤڈ" بنائیں۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

3. "کلاؤڈ" میں ایک "کیٹلاگ" بنائیں۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

4. "کیٹلاگ" کے لیے ایک "سروس اکاؤنٹ" بنائیں۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

5. "سروس اکاؤنٹ" کے لیے کلیدیں بنائیں۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

6. چابیاں محفوظ کریں، مستقبل میں ان کی ضرورت ہوگی۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

7. "ڈائریکٹری" کے لیے ایک "بالٹی" بنائیں، فائلیں اس میں جائیں گی۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

8. میں ایک حد مقرر کرنے اور "کولڈ اسٹوریج" کو منتخب کرنے کی تجویز کرتا ہوں۔
Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

سرور پر شیڈول کردہ بیک اپ سیٹ کرنا

یہ گائیڈ انتظامیہ کی بنیادی مہارتوں کو مانتی ہے۔

1. VDS پر ڈپلیسیٹی یوٹیلیٹی انسٹال کریں۔

yum install duplicity

2. mysql ڈمپ کے لیے ایک فولڈر بنائیں، میرے معاملے میں یہ VDS روٹ میں /backup_db ہے

3. bash اسکرپٹس /backup_scripts کے لیے ایک فولڈر بنائیں اور پہلا اسکرپٹ بنائیں جو بیک اپ انجام دے گا /backup_scripts/backup.sh

اسکرپٹ کا مواد:

#!`which bash`


# /backup_scripts/backup.sh

# Это условие проверяет не идёт ли в данный момент процесс резервного копирования, если идёт, то на email отправляется сообщение об ошибке (этот блок можно не использовать)
if [ -f /home/backup_check.mark ];
then

DATE_TIME=`date +"%d.%m.%Y %T"`;

/usr/sbin/sendmail -t <<EOF
From:backup@$HOSTNAME
To:<Ваш EMAIL>
Subject:Error backup to YANDEX.CLOUD
Content-Type:text/plain; charset=utf-8
Error backup to YANDEX.CLOUD

$DATE_TIME
EOF

else

# Основной блок отвечающий за резервное копирование
# Если нет ощибки ставим метку и запускаем backup

echo '' > /home/backup_check.mark;


# Удаляем файлы с дампами базы оставшиеся от предыдущего backup

/bin/rm -f /backup_db/*


# Делаем дамп всех mysql баз, предполагается что доступ добавлен в файле /root/.my.cnf

DATETIME=`date +%Y-%m-%d_%H-%M-%S`;

`which mysqldump` --quote-names --all-databases | `which gzip` > /backup_db/DB_$DATETIME.sql.gz


# Добавляем данные для отправки в Яндекс.

export PASSPHRASE=<Придумайте пароль для шифрования архива>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>


# Запускаем duplicity для резервирования необходимых папок на сервере.
# Данная команда будет создавать полный backup раз в месяц и до следующего месяца добавлять инкрементальные к нему
# -- exclude это папки, которые нужно исключить, я исключаю все папки с кешем битрикса
# --include папки которые нужно резервировать в моём случае это:
# - /backup_db
# - /home
# - /etc
# s3://storage.yandexcloud.net/backup , backup это имя созданного выше бакета

# Техническая особенность и значения некоторых параметров:
# Две строки "--exclude='**'" и "/" нужны, чтобы можно было выше оперировать --include и --exclude для разных папок. Эти две строчки сначала добавляют в бэкап весь сервер "/", потом исключают его "--exclude='**'"
# --full-if-older-than='1M' - создавать полную копию каждый месяц
# --volsize='512' - максимальный размер каждого из файлов в бэкапе в мегабайтах
# --log-file='/var/log/duplicity.log' - куда писать лог файл

`which duplicity` 
    --s3-use-ia --s3-european-buckets 
    --s3-use-new-style 
    --s3-use-multiprocessing 
    --s3-multipart-chunk-size='128' 
    --volsize='512' 
    --no-print-statistics 
    --verbosity=0 
    --full-if-older-than='1M' 
    --log-file='/var/log/duplicity.log' 
    --exclude='**/www/bitrix/backup/**' 
    --exclude='**/www/bitrix/cache/**' 
    --exclude='**/www/bitrix/cache_image/**' 
    --exclude='**/www/bitrix/managed_cache/**' 
    --exclude='**/www/bitrix/managed_flags/**' 
    --exclude='**/www/bitrix/stack_cache/**' 
    --exclude='**/www/bitrix/html_pages/*/**' 
    --exclude='**/www/bitrix/tmp/**' 
    --exclude='**/www/upload/tmp/**' 
    --exclude='**/www/upload/resize_cache/**' 
    --include='/backup_db' 
    --include='/home' 
    --include='/etc' 
    --exclude='**' 
    / 
    s3://storage.yandexcloud.net/backup



# Данная команда нужна для чистки.
# Она оставляет 3 последних полных backup и ассоциированных с ними инкрементальных backup.
# Т.о. у меня остаются backup за 3 месяца, т.к. первая команда каждый месяц делает новый полный backup

`which duplicity` remove-all-but-n-full 3 --s3-use-ia --s3-european-buckets --s3-use-new-style --verbosity=0 --force s3://storage.yandexcloud.net/backup



unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

# Удаляем метку об идущем backup

/bin/rm -f /home/backup_check.mark;

fi

4. پہلی بار اسکرپٹ چلائیں اور نتیجہ چیک کریں؛ فائلیں "بالٹی" میں ظاہر ہونی چاہئیں۔

`which bash` /backup_scripts/backup.sh

Yandex.Cloud میں 1C-Bitrix پر سائٹ کے ساتھ اضافی VDS بیک اپ

5. روٹ صارف کو دن میں 2 بار چلانے کے لیے کرون میں ایک اسکرپٹ شامل کریں، یا آپ کو مطلوبہ فریکوئنسی کے ساتھ۔

10 4,16 * * * `which bash` /backup_scripts/backup.sh

Yandex.Cloud سے ڈیٹا کی بازیافت

1. ایک ریکوری فولڈر بنائیں /backup_restore

2. ریکوری /backup_scripts/restore.sh کے لیے ایک bash اسکرپٹ بنائیں

میں ایک مخصوص فائل کو بحال کرنے کی سب سے مشہور مثال دیتا ہوں:

#!`which bash`

export PASSPHRASE=<Пароль для шифрования архива используемый при бэкапе>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>

# 3 примера, раскомментировать нужный

# Получить статус backup
#`which duplicity` collection-status s3://storage.yandexcloud.net/backup

# Восстановить index.php из корня сайта
#`which duplicity` --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

# Восстановить index.php из корня сайта 3х дневной давности
#`which duplicity` --time='3D' --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

3. اسکرپٹ کو چلائیں اور نتیجہ کا انتظار کریں۔

`which bash` /backup_scripts/backup.sh

/backup_restore/ فولڈر میں آپ کو index.php فائل ملے گی جس کا پہلے بیک اپ لیا گیا تھا۔

آپ اپنی ضروریات کے مطابق بہتر ایڈجسٹمنٹ کر سکتے ہیں۔

مائنس ڈپلیکیشن

دوغلے پن میں ایک خرابی ہے - چینل کے استعمال کی حد مقرر کرنا ممکن نہیں ہے۔ ایک باقاعدہ چینل کے ساتھ یہ کوئی مسئلہ پیدا نہیں کرتا، لیکن جب روزانہ اسپیڈ چارجنگ کے ساتھ DDoS سے محفوظ چینل استعمال کرتے ہیں، تو میں 1-2 میگا بٹس کی حد مقرر کرنے کے قابل ہونا چاہوں گا۔

ایک نتیجہ کے طور پر

Yandex.Cloud یا Amazon S3 میں بیک اپ سائٹ اور OS سیٹنگز کی ایک آزاد کاپی فراہم کرتا ہے جس تک کسی دوسرے سرور یا مقامی کمپیوٹر سے رسائی حاصل کی جا سکتی ہے۔ مزید یہ کہ، یہ کاپی ہوسٹنگ کنٹرول پینل یا Bitrix ایڈمن پینل میں نظر نہیں آتی، جو اضافی سیکیورٹی فراہم کرتا ہے۔

بدترین صورت حال میں، آپ ایک نیا سرور جمع کر سکتے ہیں اور کسی بھی تاریخ میں سائٹ کو تعینات کر سکتے ہیں۔ اگرچہ سب سے زیادہ مقبول فعالیت ایک مخصوص تاریخ کے لئے ایک فائل تک رسائی حاصل کرنے کی صلاحیت ہو گی.

آپ اس تکنیک کو کسی بھی انجن پر کسی بھی VDS یا سرشار سرورز اور سائٹس کے ساتھ استعمال کر سکتے ہیں، نہ کہ صرف 1C-Bitrix۔ OS CentOS کے علاوہ بھی ہو سکتا ہے، جیسے Ubuntu یا Debian۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں