집에가고싶다 목록

2025-06-01

구글 블로거(블로그스팟) 백업 파일 분할 방법 – 직접 분할 & Python 자동 분할

구글 블로거(블로그스팟)에서는 대량의 게시물이 있는 블로그의 백업 후 복원시 .xml 파일의 분할이 필요합니다. 블로거의 .xml 백업 파일을 나누는 이유는 게시물이 많은 블로그의 경우 (예: 보통 500개 이상) 블로그 복원 시 오류가 발생합니다. 블로거는 한 번에 많은 게시물을 가져오지 못할 수 있습니다. (특히 500개 이상이면 오류 확률이 높습니다.) 그래서 백업받은 .xml 파일을 분할해야 합니다.


블로거 콘텐츠 가져오기 오류


.xml 파일 나누는 방법 2가지

1. 직접 분할 (작은 블로그에 적합, 약 500개 이하 단위)

- .xml 파일을 텍스트 편집기(예: editplus, VS Code, Notepad++, Sublime Text 등)로 엽니다.

- 다음 구조를 확인합니다.

---------------------------------------------------------------

<feed xmlns='http://www.w3.org/2005/Atom'>

  <entry>...</entry>   ← 게시물 1

  <entry>...</entry>   ← 게시물 2

  ...

</feed>

---------------------------------------------------------------


- <entry> 블록 하나가 게시물 1개입니다.

- 원하는 개수만큼 <entry>를 포함하여 파일을 나눕니다. (저의 경우 100개씩 작업했습니다.)


* 각각의 파일은 반드시 다음과 같은 구조를 가져야 합니다.

---------------------------------------------------------------

<feed xmlns='http://www.w3.org/2005/Atom'>

  <entry>...</entry>

  ...

</feed>

---------------------------------------------------------------

- 파일 이름은 part1.xml, part2.xml 등으로 저장

- 블로거에서 각각 콘텐츠 가져오기로 순차적으로 업로드

* 절대 <feed> 태그와 <entry> 태그의 쌍을 깨지 마세요. XML 형식 오류 납니다.

(여기서 태그의 쌍은 XML에서 열리는 태그와 닫히는 태그가 반드시 정확히 짝을 이뤄야 한다는 의미입니다.)



2. Python 스크립트를 이용한 자동분할

아래는 .xml 백업 파일을 100개 단위로 자동 분할하는 Python 스크립트입니다


Python Script

-------------------------------------------------

import os

from xml.etree import ElementTree as ET


# 원본 백업 파일 경로

input_file = 'blog-backup.xml'

output_folder = 'split_output'

entries_per_file = 100


os.makedirs(output_folder, exist_ok=True)


# XML 파싱

tree = ET.parse(input_file)

root = tree.getroot()


# 네임스페이스 처리

ns = {'atom': 'http://www.w3.org/2005/Atom'}

ET.register_namespace('', ns['atom'])


# <entry> 요소들만 추출

entries = root.findall('atom:entry', ns)


# 나머지 요소들 (<feed> 내에 있는 header들) 복사

def clone_feed_base():

    new_root = ET.Element('feed', root.attrib)

    for child in root:

        if child.tag != '{http://www.w3.org/2005/Atom}entry':

            new_root.append(child)

    return new_root


# 분할 저장

for i in range(0, len(entries), entries_per_file):

    part_entries = entries[i:i+entries_per_file]

    new_feed = clone_feed_base()

    for entry in part_entries:

        new_feed.append(entry)


    part_tree = ET.ElementTree(new_feed)

    output_path = os.path.join(output_folder, f'part_{i//entries_per_file + 1}.xml')

    part_tree.write(output_path, encoding='utf-8', xml_declaration=True)


print("파일 분할 완료!")

-------------------------------------------------

다운로드 - xml 자동분할 python 스크립트 (zip압축 / txt파일)


사용 방법

- 위 스크립트를 split_blog.py로 저장

- blog-backup.xml 파일과 같은 폴더에 저장

- 터미널에서 python split_blog.py 실행

- split_output 폴더에 part_1.xml, part_2.xml... 생성됨



여기까지가 백업받은 *.xml 파일의 분할 방법이었습니다. 설명이 장황됐지 해보시면 어려운것보다 귀찮은 작업일겁니다. 백업 복원 잘 해결하시고 멋진 블로그(사이트) 구축하셔서 언제나 실시간 동접 10만 사이트 기원해 드립니다. 화이팅~! ^^b



댓글 없음:

댓글 쓰기