[devpi] devpi-server 내보내기 및 가져오기 (백업과 복원)
사설 PyPI 서버를 파일로 저장하고, 불러오기
devpi-server 내보내기 및 가져오기 (백업과 복원)
사전 준비
- 이전 포스팅을 통해 devpi-server 를 띄웠고, 신규 인덱스를 생성한다.
devpi-server,devpi-web,devpi-client패키지들을 설치한다.- 신규 유저
tester, 신규 인덱스tester_index를 생성한다. - devpi-server 참고 : https://whdrns2013.github.io/python/20260122_001_devpi/
- 유저, 인덱스 생성 참고 : https://whdrns2013.github.io/python/20260125_001_devpi_index/
실행 위치 참고
- 🤖 : devpi 가 설치된 서버
- 🧑💻 : 사용자. devpi 로 패키지 설치 요청을 보내는 클라이언트
devpi-server 내보내기(export)
기능
- devpi-server 의 인스턴스 데이터를 내보낸다.
- devpi-server의 저장소 데이터를 파일 시스템 기준으로 덤프(export)하는 기능
사용 방법
- 🤖
devpi-export명령어를 통해 내보내기를 수행한다.
1
devpi-export <export 결과 데이터를 저장할 디렉터리>
옵션
| 옵션 | 명칭 | 설명 |
|---|---|---|
-c, --configfile |
설정 파일 | - devpi-server 실행시 사용하던 설정 파일 지정 - 서버를 config 기반으로 운영 중이라면 지정하는 걸 권장 |
--serverdir |
devpi-server 데이터 경로 | - devpi-server 데이터가 저장된 실제 경로 - devpi-server 실행시 별도로 server-dir을 지정한 경우 사용 |
--storage |
저장소 백엔드 | - 대부분 기본값(sqlite) 사용 - sqlite 혹은 pg8000 사용 가능 |
--include-mirrored-files |
PyPI 미러 패키지 포함 여부 | - PyPI 미러에서 다운로드 된 패키지 파일까지 포함할지 - 옵션을 사용하면 미러 패키지까지 추출 |
--hard-links |
파일 복사 대신 하드 링크 | - 파일 복사 대신 하드링크 사용 - 같은 파일시스템에서만 가능 - 백업 용량 감소, 하지만 위험성 있음 |
예제
1
2
mkdir ./export_dir
devpi-export --serverdir ./registry/ ./export_dir/
1
2
3
4
5
6
7
8
9
10
11
# 출력 (tester, tester_inde 는 유저 이름과 인덱스 이름)
2026-01-24 17:42:05,803 INFO NOCTX Loading ...
2026-01-24 17:42:05,815 INFO NOCTX wrote ...
creating /devpi/export_dir
dumped user 'tester'
copy file at tester/tester_index/my-package/0.3.0/my_package-0.3.0-py3-none-any.whl
dumped releasefile: tester/tester_index/my-package/0.3.0/my_package-0.3.0-py3-none-any.whl
dumped index 'tester/tester_index'
dumped user 'root'
dumped index 'root/pypi'
writing dataindex.json, length 4072
1
2
3
4
ls -al ./export_dir
# >> Jan 24 17:42 dataindex.json
# >> Jan 24 17:42 tester
devpi-server 가져오기(import)
기능
- 사전에 export 된 legacy devpi-server 데이터를 새로운 devpi-server 인스턴스로 가져옴
사용 방법
- 🤖
devpi-import명령어를 통해 가져오기를 수행한다.
1
devpi-import <export 결과가 저장된 디렉터리>
옵션
| 옵션 | 명칭 | 설명 |
|---|---|---|
-c, --configfile |
설정 파일 | - devpi-server 실행 시 사용할 설정 파일을 지정 |
--serverdir |
devpi-server 데이터 경로 | - 새 devpi-server 인스턴스의 데이터가 생성될 경로를 지정 - 기존 데이터가 없는 빈 디렉터리여야 안전 |
--storage |
저장소 백엔드 | - export 당시 사용한 storage 타입과 동일하게 지정 - sqlite 또는 pg8000 |
--no-root-pypi |
root/pypi 생성 여부 | - 서버 초기화 시 기본으로 생성되는 root/pypi 인덱스를 생성하지 않는 옵션 - export 데이터에 이미 존재하는 경우 중복 생성을 방지 |
--root-passwd |
root 초기 비밀번호 | - import 시 root 계정의 초기 비밀번호를 설정 |
--root-passwd-hash |
root 비밀번호 해시 | - 평문 대신 해시된 비밀번호를 지정 |
--skip-import-type |
특정 인덱스 타입 제외 | - 지정한 인덱스 타입을 import 대상에서 제외 |
--no-events |
이벤트 실행 지연 | - import 중 이벤트 실행을 생략하고 서버 기동 후 처리 |
--hard-links |
파일 복사 대신 하드 링크 | - 파일 복사 대신 하드 링크를 사용 - export 시 해당 옵션을 사용했다면 import 시에도 동일하게 지정 - 동일 파일시스템에서만 가능 - 운영상 위험성이 있음 |
import 예제
- import
1
2
mkdir import_dir
devpi-import --serverdir ./import_dir --no-root-pypi ./export_dir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 출력
2026-01-24 17:53:21,164 INFO NOCTX Loading node ...
...
******** Importing packages from /devpi/export_dir **********
Number of users: 2
Number of indexes: 2
Index tester/tester_index has 1 projects and 1 files
Index root/pypi has 0 projects and 0 files
Total number of projects: 1
Total number of files: 1
2026-01-24 17:53:21,469 INFO setting password for user 'tester'
...
********* import_all: importing finished ***********
...
- import 결과 확인
1
2
3
4
5
6
7
8
ls -al import_dir
# >> Jan 24 17:53 +files
# >> Jan 24 17:53 .
# >> Jan 24 17:47 ..
# >> Jan 24 17:53 .event_serial
# >> Jan 24 17:53 .nodeinfo
# >> Jan 24 17:53 .serverversion
# >> Jan 24 17:53 .sqlite
Import 한 데이터로 devpi-server 가동
devpi-server 가동
- 🤖
devpi-init할 필요 없이 바로devpi-server명령어로 가동이 가능하다. - 🤖 기존의 3141번 포트가 아닌, 3142번 포트로 새롭게 서버를 실행시킨다.
1
devpi-server --host=0.0.0.0 --port 3142 --serverdir ./import_dir
결과 확인
- 🧑💻 devpi-client 로 사용할 인덱스를 지정하고 로그인한다.
- 🧑💻 로그인하는 계정은 원래 서버(3141번 포트)에서 사용하던 걸 그대로 사용하면 된다.
1
2
devpi use http://{HOST}:3142
devpi login {user} password='{password}'
- 🧑💻 사용 가능한 인덱스 리스트를 뽑아본다.
1
devpi index -l
1
2
# 출력.. 성공!
tester/tester_index
Reference
devpi-stable Documentation - devpi_commands
// reading compass
이 글과 이어지는 경로
시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.
댓글 남기기