لا يمكن استعادة backup من CLI

أهلاً،

أحاول استعادة نسخة احتياطية وأواجه هذا الخطأ باستمرار:

Starting restore: blackiron-2022-12-03-163112-v20221201035918.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-11-28-040817 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
EXCEPTION: /var/www/discourse/lib/discourse.rb:138:in `exec': Failed to decompress archive.

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
/var/www/discourse/lib/discourse.rb:172:in `execute_command'
/var/www/discourse/lib/discourse.rb:138:in `exec'
/var/www/discourse/lib/discourse.rb:34:in `execute_command'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:78:in `decompress_archive'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:23:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/base.rb:584:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2023-11-28-040817' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

لست متأكدًا من سبب ظهور هذا الخطأ، فالنسخة الاحتياطية لم تتغير منذ سحبتها. شكراً لك.

نفس الخطأ على الويب.

هذا على الأرجح هو الخطأ الحرج. هل حاولت التحقق مما إذا كان النسخ الاحتياطي غير تالف؟ أعتقد أن هذا سيعمل:

$ gunzip -c  blackiron-2022-12-03-163112-v20221201035918.tar.gz | tar -t > /dev/null
إعجاب واحد (1)

نفس المشكلة. لا يمكنني الحصول على نسخة احتياطية جديدة لأن تكوين RAID للخادم قد اختفى منذ فترة طويلة ولكني بحاجة إلى هذه البيانات.

image

تم التحقق من النسخة الاحتياطية. تبدو صالحة.

هل هذا على نفس الجهاز الذي تقوم باستعادة النسخة الاحتياطية عليه؟ من الممكن أن الملف لم يكتمل نقله أو تعرض للتلف أثناء النقل.

النسخة الاحتياطية موجودة على جهاز الكمبيوتر الذي يعمل بنظام Windows، وأنا أستخدم scp:

scp blackiron-2022-12-03-163112-v20221201035918.tar.gz root@#.#.#.#:/var/discourse/shared/standalone/backups/default

هل يتطابق المجموع الاختباري في كلا الملفين؟ (تعليمات إنشاء مجموع اختباري هنا.).

إعجاب واحد (1)

يبدو الأمر كذلك. سأستمر في البحث باستخدام WinRAR ولكن إذا كانت لديك أي اقتراحات فسأكون ممتنًا. أحصل على نفس التحذير هناك أيضًا، ولكني أراه في VSCode بشكل جيد.

إذا كان هذا يساعد، فإن pigz يُظهر:

/blackiron-2022-12-03-163112-v20221201035918.tar.gz إلى <stdout> pigz: تخطي: /blackiron-2022-12-03-163112-v20221201035918.tar.gz: تالف -- بيانات مضغوطة غير مكتملة

ليس لدي خبرة كبيرة في هذا المجال. إذا تمكنت من الحصول على نسخة من الملفات، فيجب أن تكون قادرًا على إنشاء ملف نسخ احتياطي جديد لنسخه.

لم أتمكن من إصلاحها بكتابة نص برمجي خاص بي.

أنا لست خبيرًا في ملفات gzips، لذلك لا يمكنني فعل الكثير. إذا كان بإمكان أي شخص آخر مساعدتي في استعادة الملفات مع الوصول الكامل إلى نصوص SQL والملفات التي تم تحميلها، فيرجى إخباري. نص SQL يبدو جيدًا عند إلقاء نظرة سريعة، والملفات التي تم تحميلها جيدة أيضًا.

تحديث: تمكنت من استعادة إصدار أقدم من الموقع بنجاح، قبل حوالي شهرين. ما زلت أتطلع إلى تشغيل الإصدار الجديد (الأحدث).

هذه أخبار جيدة. لقد وجدت اقتراحًا لاستخدام The gzip Recovery Toolkit، والذي يبدو واعدًا.

إعجابَين (2)

لقد اتبعت هذا الدليل وقمت بنقله وحصلت على هذا الخطأ:

root@ftsweb-app:/var/www/discourse# discourse restore blackiron-2022-12-03-163112-v20221201035918.tar.gz
Starting restore: blackiron-2022-12-03-163112-v20221201035918.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-11-28-060452 exists...
Copying archive to tmp directory...
EXCEPTION: /var/www/discourse/lib/discourse.rb:138:in `exec': Failed to copy archive to tmp directory.
cp: cannot open '/var/www/discourse/public/backups/default/blackiron-2022-12-03-163112-v20221201035918.tar.gz' for reading: Permission denied

هناك احتمال كبير أن يكون الملف مملوكًا لمستخدم آخر. ls -l /var/www/discourse/public/backups/default/blackiron-2022-12-03-163112-v20221201035918.tar.gz' سيوضح المشكلة على الأرجح.

إعجاب واحد (1)

يقول إن المالك هو root. هل أحتاج إلى جعله المستخدم discourse؟

تعديل: يبدو أن الأداة تسببت في المزيد من الضرر.