가져오기를 수행하는 머신에서 접근할 수 있는 원하는 위치에 파일을 배치하고, 해당 경로를 여기에 입력하세요:
ATTACHMENT_DIR = '/tmp/attachments'
Docker 컨테이너 내부에서 실행 중이고 파일을 var/discourse/shared/standalone/tmp/attachments 아래에 배치했다면, 경로에는 /shared/tmp/attachments를 사용해야 합니다. 컨테이너 내부에서 파일을 확인하여 이를 검증할 수 있습니다.
root@my-app:/var/www/discourse# RAILS_ENV=production bundle exec ruby script/import_scripts/xenforo.rb
기존 그룹 로딩 중...
기존 사용자 로딩 중...
기존 카테고리 로딩 중...
기존 게시글 로딩 중...
기존 주제 로딩 중...
사용자 생성 중
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 100명의 사용자를 건너뜀
이미 가져온 4명의 사용자를 건너뜀
카테고리 가져오는 중...
23 / 23 (100.0%) [326682 items/min]
주제 및 게시글 생성 중
74 / 74752 ( 0.1%) [99817 items/min] 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 `squush!'
/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#
이번에는 첨부 파일을 var/discourse/shared/standalone/tmp/attachments에 두었습니다.
찾았습니다… 문제는 가져오기용 첨부 파일이 포함된 폴더가 Docker 앱 내의 /var/www/discourse/…/tmp/attachments 경로 안에 반드시 있어야 한다는 것입니다.
이제 괜찮습니다. 스크립트가 실행 중이며 약 1.5시간 후에 완료될 것입니다.
수정: 다시 첨부 파일 가져오기가 작동하지 않는 것 같습니다… 현재 가져오기의 78%에 도달했으며, 이미지나 첨부 파일이 있었던 모든 게시물에 [ATTACH]9788[/ATTACH]와 같은 태그와 그 사이의 숫자가 남아 있습니다. 그리고 업로드된 다음 첨부 파일은 [ATTACH]9789[/ATTACH]가 됩니다…
Xenforo의 첨부 파일을 특정 순서대로 정렬해야 하나요, 아니면 단순히 구조와 /tmp/attachments만 복사/붙여넣기하면 되는 건가요?
현재 스냅샷을 이용해 새 VM에 설치를 진행 중이라, 세부 사항을 빠르게 변경하고 마이그레이션을 다시 시작할 수 있습니다.
어제 Xenforo의 첨부 파일 폴더를 가져왔습니다. 이 폴더의 구조는 'attachements’라는 이름의 메인 폴더 안에 0부터 9까지의 이름으로 된 9개의 하위 폴더가 있고, 각 하위 폴더에는 약 600~700개의 첨부 파일(.jpg)이 들어 있습니다. 해당 폴더를 var/discourse/shared/standalone/tmp/attachments에 배치하고 xenforo.rb 스크립트를 수정하여 다음과 같이 설정했습니다.
ATTACHMENT_DIR = '/shared/tmp/attachments'
ls /tmp/attachments 명령으로 테스트했을 때 구조가 올바르게 확인되었지만, 처음과 동일한 오류가 발생했습니다:
creating topics and posts
74 / 74752 ( 0.1%) [99817 items/min] 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#Preformatted text`