Нужно ли сортировать вложения из Xenforo в определённом порядке, или достаточно просто скопировать структуру и папку /tmp/attachments?
Сейчас я устанавливаю на новую виртуальную машину с использованием снимка (snapshot), чтобы быстро изменять настройки и начинать миграцию заново.
Вчера я поместил папку вложений из Xenforo, которая имеет следующую структуру: основная папка с именем attachments, внутри которой находятся 9 подпапок с именами от 0 до 9, а в каждой из них — около 600–700 вложений (.jpg). Я разместил эту папку в var/discourse/shared/standalone/tmp/attachments и изменил скрипт xenforo.rb, добавив:
ATTACHMENT_DIR = '/shared/tmp/attachments'
Я протестировал это командой ls /tmp/attachments и получил правильную структуру, но столкнулся с той же ошибкой, что и в первый раз:
создание тем и сообщений
74 / 74752 ( 0.1%) [99817 элементов/мин] Traceback (most recent call last):
18: from script/import_scripts/xenforo.rb:396:in <main>' 17: from /var/www/discourse/script/import_scripts/base.rb:47:in perform’
16: from script/import_scripts/xenforo.rb:32:in execute' 15: from script/import_scripts/xenforo.rb:174:in import_posts’
14: from /var/www/discourse/script/import_scripts/base.rb:869:in batches' 13: from /var/www/discourse/script/import_scripts/base.rb:869:in loop’
12: from /var/www/discourse/script/import_scripts/base.rb:870:in block in batches' 11: from script/import_scripts/xenforo.rb:180:in block in import_posts’
10: from /var/www/discourse/script/import_scripts/base.rb:490:in create_posts' 9: from /var/www/discourse/script/import_scripts/base.rb:490:in each’
8: from /var/www/discourse/script/import_scripts/base.rb:491:in block in create_posts' 7: from script/import_scripts/xenforo.rb:186:in block (2 levels) in import_posts’
6: from script/import_scripts/xenforo.rb:315:in process_xenforo_post' 5: from script/import_scripts/xenforo.rb:324:in process_xf_attachments’
4: from /usr/local/lib/ruby/2.6.0/set.rb:338:in each' 3: from /usr/local/lib/ruby/2.6.0/set.rb:338:in each_key’
2: from script/import_scripts/xenforo.rb:326:in block in process_xf_attachments' 1: from /usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in squish!’
/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb:22:in gsub!': can't modify frozen String (FrozenError) root@my-app:/var/www/discourse#Текст с форматированием`
2019-11-15T23:00:00Z
Я удалил ! из строки gsub! в файле:
/usr/local/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/string/filters.rb
Теперь скрипт импорта не останавливается, а продолжает работу и показывает следующую информацию о вложениях:
В любом случае, например, последняя строка:
Could not find file /shared/tmp/attachments//2/2485-c3da9f6ee1e33d3ebf418c5dea1f9e8a.data. Skipping attachment id 2485
…файл действительно находится по этому пути, но вместо .data там есть .JPG.
Любая помощь будет принята с благодарностью.
2019-11-15T23:00:00Z
В скрипте была ошибка, я её нашёл и исправил. Теперь мне удалось успешно импортировать вложения.