> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/ko/maintenance/data-and-backups.md).

# 데이터 및 백업

때때로 Overleaf를 발전시키면서 데이터베이스의 데이터 스키마를 변경해야 할 수 있으며, 이 과정을 자동화하기 위해 마이그레이션 스크립트가 사용됩니다. 이 스크립트는 다음에서 실행되었을 것입니다 [overleaf.com](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit) 최초이며, 이는 세계에서 가장 큰 Overleaf 인스턴스이므로 대부분의 경우는 이미 접했을 것입니다. 그러나 귀하의 데이터에 대해서는 어떠한 보장도 하지 않습니다. 반드시 **일관된** 데이터 백업을 생성해 두십시오 **이전** 인스턴스를 업그레이드하기 전에.

{% hint style="info" %}
새 Docker 이미지로 업그레이드할 때, 아직 실행되지 않은 모든 마이그레이션은 **아니** 자동으로 실행됩니다. 데이터셋의 크기에 따라 시간이 다소 걸릴 수 있으며, 로그를 계속 확인하면 진행 상황을 알 수 있습니다. 자세한 내용은 다음을 참조하세요: [로그](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging) 문서.
{% endhint %}

### 데이터 저장

Overleaf Community Edition 및 Server Pro는 데이터를 세 곳에 나누어 저장합니다:

* **MongoDB 데이터베이스:** 여기에 사용자 및 프로젝트 데이터가 저장됩니다.
* **Redis:** 실행 중인 데이터에 대한 고성능 캐시 역할을 하며, 주로 프로젝트 편집 및 협업과 관련된 정보를 저장합니다.
* **Overleaf 파일 시스템:** 편집할 수 없는 프로젝트 파일(이미지 포함)을 저장하며, 프로젝트 컴파일 중 임시 디스크 캐시로도 사용됩니다.

{% hint style="info" %}
다음일 수 있습니다 `~/sharelatex_data` 또는 `~/overleaf_data`, 인스턴스가 언제 설정되었는지에 따라 다릅니다.
{% endhint %}

{% hint style="success" %}
프로젝트 파일과 전체 프로젝트 기록 데이터의 경우 S3 호환 스토리지 백엔드도 지원합니다.
{% endhint %}

디스크의 폴더 구조에 대한 자세한 내용은 폴더 상세를 참조하세요.

### 일관된 백업 수행

일관된 백업을 만들 때 포함해야 하는 저장소는 세 가지입니다:

* MongoDB
* Redis
* Overleaf 파일 시스템 데이터

일관된 백업을 생성하려면 **필수적입니다** 백업 프로세스가 실행되는 동안 사용자가 새 데이터를 생성하지 못하도록 해야 합니다. 따라서 사용자가 인스턴스에 접근하거나 프로젝트를 편집할 수 없도록 유지보수 시간대를 잡는 것을 권장합니다.

백업 프로세스를 시작하기 전에 인스턴스를 오프라인으로 전환해야 합니다. Server Pro부터는 `3.5.0` 종료 과정이 사이트 종료와 사용자 연결 해제를 자동화합니다.

인스턴스를 종료하려면 다음을 실행해야 합니다 `bin/docker-compose stop sharelatex` Toolkit 배포를 사용하는 경우 또는 `docker compose stop sharelatex` Docker Compose를 사용하는 경우.

컨테이너가 `sharelatex` 중지되면 백업 프로세스를 시작할 수 있습니다.

백업 프로세스가 완료된 후 **성공적으로** 다시 `sharelatex` 컨테이너를 시작해야 합니다. 이를 위해 다음을 실행하세요 `bin/docker-compose start sharelatex` Toolkit 배포를 사용하는 경우 또는 `docker compose start sharelatex` Docker Compose를 사용하는 경우.

{% hint style="danger" %}

* 백업은 Overleaf 인스턴스가 실행 중인 서버와는 별도의 서버에 저장해야 하며, 가능하면 완전히 다른 위치에 보관하는 것이 좋습니다.
* 여러 MongoDB 인스턴스에 데이터베이스를 복제하면 어느 정도 중복성은 제공할 수 있지만, 손상으로부터는 보호하지 못합니다.
* 백업을 테스트하는 것이 백업이 완전하고 정상적으로 작동하는지 확인하는 가장 좋은 방법입니다.
  {% endhint %}

### MongoDB

MongoDB에는 다음과 같은 명령줄 도구가 있습니다 [mongodump](https://docs.mongodb.com/manual/reference/program/mongodump/) 이 도구는 데이터베이스에 저장된 사용자 및 프로젝트 데이터의 백업을 생성하는 데 사용할 수 있습니다.

### Overleaf 파일 시스템 데이터

Toolkit 배포의 경우, 편집할 수 없는 파일이 저장되는 경로는 `config/overleaf.rc` 다음을 사용해 `OVERLEAF_DATA_PATH` 환경 변수에 지정되지만, 인스턴스가 생성된 시점에 따라 이것이 다음일 수 있습니다 `data/sharelatex`.

다음과 같은 도구를 사용하여 **rsync** 이 디렉터리를 재귀적으로 복사해야 완전한 백업이 생성됩니다.

### Redis

Redis는 MongoDB로 반영되기 전의 사용자 세션과 대기 중인 문서 업데이트를 저장합니다.

Append Only File(AOF) 지속성은 Redis 지속성에 권장되는 구성입니다.

Toolkit 사용자는 기본적으로 다음의 경우 AOF 지속성이 활성화되어 있습니다 **새** 설치본이며, 기존 사용자는 AOF 활성화에 대한 자세한 정보를 찾을 수 있습니다 [여기](/on-premises/ko/configuration/overleaf-toolkit/redis.md#enabling-append-only-file-persistence).

AOF 지속성과 함께 RDB 스냅샷을 계속 사용하기로 결정한 경우, RDB 파일을 안전한 위치에 복사하여 백업으로 보관할 수 있습니다.

### 서버 간 데이터 마이그레이션

최상의 경우 새 인스턴스에는 아직 중요한 데이터가 없습니다. 인스턴스의 데이터를 병합하는 절차는 제공하지 않습니다.

새 인스턴스에 아직 데이터가 없다고 가정하면, 따라할 수 있는 몇 가지 단계는 다음과 같습니다. 큰 흐름으로는, 다음의 tar 아카이브를 생성합니다. `mongo`, `redis` 그리고 `overleaf` 볼륨을 복사한 다음 새 서버로 옮겨 그곳에서 다시 압축을 풉니다.

#### Toolkit

```bash
# 이전 인스턴스를 정상적으로 종료
old-server$ bin/stop

# tar 아카이브 생성
old-server$ tar --create --file backup-old-server.tar config/ data/

# backup-old-server.tar 파일을 old-server에서
# 적합한 방법으로 new-server로 복사

# 새 인스턴스를 정상적으로 종료(아직 시작했다면)
new-server$ bin/stop

# 새 데이터 이동, 삭제해도 됩니다
new-server$ mkdir backup-new-server
new-server$ mv config/ data/ backup-new-server/

# config/data 디렉터리를 다시 채우기
new-server$ tar --extract --file backup-old-server.tar

# 컨테이너 시작
new-server$ bin/up
```

#### Docker Compose

```bash
# 이전 인스턴스를 정상적으로 종료
old-server$ docker stop sharelatex
old-server$ docker stop mongo redis

# tar 아카이브 생성
old-server$ tar --create --file backup-old-server.tar ~/OVERLEAF_data ~/mongo_data ~/redis_data

# backup-old-server.tar 파일을 old-server에서
# 적합한 방법으로 new-server로 복사

# 새 인스턴스를 정상적으로 종료(아직 시작했다면)
new-server$ docker stop sharelatex
new-server$ docker stop mongo redis

# 새 데이터 이동, 삭제해도 됩니다
new-server$ mkdir backup-new-server
new-server$ mv ~/OVERLEAF_data ~/mongo_data ~/redis_data backup-new-server/

# 데이터 디렉터리를 다시 채우기
new-server$ tar --extract --file backup-old-server.tar

# 컨테이너 시작
new-server$ docker start mongo redis
new-server$ docker start sharelatex
```

다음에 따라 **docker-compose.yml** 파일에 따라, 다음의 경로를 조정해야 할 수 있습니다 `mongo`, `redis`, `overleaf` 볼륨.

{% hint style="info" %}
루트 사용자로(또는 sudo와 함께) 실행할 경우, tar는 파일의 소유자/그룹 및 권한을 유지하며, 이는 백업을 복원할 때 매우 중요합니다.
{% endhint %}

### 폴더 상세

{% hint style="info" %}
다음 폴더에는 추가 힌트가 있습니다:

* (b) 백업에 포함, 일관성을 보장하기 위해 인스턴스가 중지된 상태에서 가장 좋음
* (d) 삭제할 수 있음
* (e) 임시 파일, 인스턴스가 중지되면 삭제할 수 있음
  {% endhint %}

1. `~/mongo_data` (b)
   * mongodb 데이터 디렉터리
2. `~/redis_data` (b)
   * redis db 데이터 디렉터리
3. `~/overleaf_data`
   1. bin
      1. synctex (d)
         * 최신 릴리스에서는 사용되지 않으며, 이전에는 사용자 지정 synctex 바이너리가 사용되었습니다(synctex는 .tex 파일과 PDF 간의 소스 매핑에 사용됩니다)
   2. data
      1. cache (e)
         * 컴파일용 바이너리 파일 캐시
      2. compiles (e)
         * 여기서 LaTeX 컴파일이 이루어집니다
      3. db.sqlite (d)
         * 최신 릴리스에서는 사용되지 않으며, 이전에는 clsi 캐시 세부 정보가 저장되었습니다(이제는 단순한 메모리 내 맵으로 이동했거나 디스크를 검색합니다)
      4. db.sqlite-wal (d)
         * 최신 릴리스에서는 사용되지 않으며, db.sqlite를 참조하세요
      5. output (e)
         * 클라이언트에 제공하기 위한 LaTeX 컴파일 결과 저장
      6. template\_files (b)
         * 템플릿 시스템의 이미지 미리보기(Server Pro 전용)
      7. user\_files (b)
         * 프로젝트의 바이너리 파일
      8. history (b)
         * 전체 프로젝트 기록 파일
   3. tmp
      1. dumpFolder (e)
         * zip 파일 처리 중 생성되는 임시 파일
      2. uploads (e)
         * 파일 업로드 버퍼링(binary file/new-project-from-zip 업로드)
      3. projectHistories (e)
         * 전체 프로젝트 기록 마이그레이션을 위한 임시 파일


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/ko/maintenance/data-and-backups.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
