Duplicati: 서버 데이터를 구글 드라이브에 자동 백업하기

안녕하세요, Mark입니다.

서버를 운영하면서 가장 무서운 순간이 언제냐고요? 저는 이런 생각이 들 때입니다.

“지금 서버가 갑자기 날아가면 어떡하지?”

오라클 클라우드가 안정적이긴 하지만, 세상에 100% 안전한 건 없습니다. 서버가 날아가거나, 실수로 중요한 파일을 지우거나, 설정을 잘못 건드려서 망가지거나… 이런 상황에 대비하는 게 바로 백업입니다.

오늘 소개할 Duplicati는 서버 데이터를 자동으로 암호화해서 구글 드라이브에 백업해주는 오픈소스 도구입니다.


💾 Duplicati가 뭔가요?

Duplicati는 암호화된 증분 백업을 클라우드에 자동으로 저장해주는 무료 오픈소스 백업 클라이언트입니다. 2008년부터 시작된 오래된 프로젝트로, GitHub에서 꾸준히 관리되고 있습니다.

가장 큰 특징은 세 가지입니다.

① 암호화 (AES-256) 백업 파일은 서버에서 클라우드로 전송되기 전에 AES-256 방식으로 암호화됩니다. 구글 드라이브에 업로드된 파일은 암호화된 상태라서, 구글도 내용을 볼 수 없어요. 내 암호화 키가 없으면 누구도 복호화할 수 없습니다.

② 증분 백업 (Incremental Backup) 처음 백업할 때만 전체 데이터를 올리고, 이후로는 변경된 부분만 업로드합니다. 덕분에 시간도 짧고 저장 공간도 훨씬 절약됩니다.

③ 자동 스케줄 한 번 설정해두면 정해진 시간에 알아서 자동으로 백업이 실행됩니다. 저는 매주 1회 새벽 3시에 실행되도록 설정해뒀어요.


☁️ 어디에 백업할 수 있나요?

Duplicati가 지원하는 백업 목적지가 25개 이상입니다.

카테고리지원 서비스
구글Google Drive, Google Cloud Storage
마이크로소프트OneDrive, Azure Blob
아마존Amazon S3, Amazon Cloud Drive
기타 클라우드Dropbox, Backblaze B2, MEGA 등
프로토콜FTP, SSH(SFTP), WebDAV
로컬로컬 폴더, 네트워크 드라이브

저는 구글 드라이브를 사용하고 있습니다. 어차피 구글 계정이 있고, 무료 15GB도 있으니까요. 백업 파일은 암호화되어 있어서 구글에 맡겨도 안심이 됩니다.


📦 포테이너 스택으로 설치하기

services:
  duplicati:
    image: lscr.io/linuxserver/duplicati:latest
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - SETTINGS_ENCRYPTION_KEY=[본인만_아는_키]
    volumes:
      # Duplicati 설정 저장
      - /home/ubuntu/duplicati/config:/config

      # 백업 저장 위치 (로컬)
      - /home/ubuntu/duplicati/backups:/backups

      # 백업할 소스들 (읽기 전용으로 마운트)
      - /home/ubuntu/ghost:/source/ghost:ro
      - /home/ubuntu/wordpress:/source/wordpress:ro
      - /home/ubuntu/vaultwarden:/source/vaultwarden:ro
      - /home/ubuntu/n8n:/source/n8n:ro
    ports:
      - 8200:8200
    restart: unless-stopped

주요 항목 설명

항목설명
SETTINGS_ENCRYPTION_KEYDuplicati 설정 파일 자체를 암호화하는 키
/configDuplicati 설정 및 데이터베이스 저장
/backups로컬에 저장할 경우 백업 파일 경로
/source/ghost:roghost 폴더를 읽기 전용으로 연결
8200:8200웹 UI 접속 포트

💡 :ro 가 뭔가요? Read Only의 약자입니다. Duplicati가 백업 원본 데이터를 읽기만 하고 수정할 수 없게 합니다. 백업 도구가 실수로 원본 데이터를 건드리는 걸 방지하는 안전장치예요.

⚠️ SETTINGS_ENCRYPTION_KEY 중요! 이 키는 Duplicati 설정 파일을 암호화합니다. 잊어버리면 설정을 복구할 수 없으니 반드시 따로 보관하세요.

Deploy the Stack 클릭 후 설치 완료!


🌐 접속 및 백업 설정

브라우저에서 접속합니다.

http://my-server:8200

처음 접속하면 비밀번호 설정 화면이 나옵니다. 설정 후 대시보드가 열립니다.

백업 작업 만들기

Add backup → Configure a new backup 클릭

1단계: 백업 이름 및 암호화 설정

  • 백업 이름 입력 (예: Oracle-Server-Full-Backup)
  • 암호화 방식: AES-256 선택 (기본값)
  • 암호화 패스프레이즈 입력 → 이거 잃어버리면 복구 불가능합니다!

2단계: 백업 목적지 설정

  • Google Drive 선택
  • Google 계정 OAuth 인증 진행
  • 백업 파일이 저장될 폴더 지정

3단계: 백업할 소스 선택

  • /source/ghost
  • /source/wordpress
  • /source/vaultwarden
  • 필요한 폴더들 선택

4단계: 스케줄 설정

  • 자동 실행 시간 설정
  • 저는 매주 일요일 새벽 3시로 설정했습니다

5단계: 버전 보관 정책

  • 몇 개의 백업 버전을 보관할지 설정
  • 현재 제 대시보드에는 8 Versions가 보관되어 있어요

SaveRun now로 첫 백업 실행!


📊 현재 운영 현황

제 Duplicati 대시보드를 보면 이렇습니다.

  • 백업 이름: Oracle-Server-Full-Backup
  • 목적지: Google Drive
  • 마지막 성공 백업: 5시간 전
  • 다음 예정 실행: 7일 후 새벽 3시
  • 소스 용량: 997.59 MB
  • 구글 드라이브 저장 용량: 460.65 MB (암호화+압축 덕분에 절반 이하!)
  • 보관 버전: 8개

소스가 약 1GB인데 구글 드라이브에는 460MB만 차지하고 있어요. 증분 백업과 압축 덕분입니다.


🔒 백업 암호화 원리

Duplicati의 보안 설계 원칙은 TNO(Trust No One)입니다.

백업 데이터는 서버에서 떠나기 전에 암호화됩니다. 구글 드라이브에 저장된 파일은 암호화된 덩어리들이라서 구글도 내용을 알 수 없고, 누가 구글 드라이브 접근 권한을 얻어도 패스프레이즈 없이는 복호화가 불가능합니다.

⚠️ 패스프레이즈를 잃어버리면 백업이 있어도 복구할 수 없습니다. Vaultwarden 같은 비밀번호 관리자에 꼭 저장해두세요. 아이러니하게도 비밀번호 관리자의 비밀번호는 머릿속에 새겨두셔야 합니다 ㅎㅎ


✅ 핵심 요약

항목내용
용도서버 데이터 자동 암호화 백업
암호화AES-256, 업로드 전 클라이언트 측 암호화
백업 방식초기 전체 + 이후 증분 백업
지원 목적지구글 드라이브, S3, OneDrive 등 25개 이상
스케줄자동 예약 실행
접속my-server:8200, Tailscale 전용

마치며

백업은 필요 없을 때는 존재감이 없다가, 필요한 순간이 오면 그게 전부가 됩니다. 열심히 쌓아온 블로그 데이터, Vaultwarden 비밀번호들, 각종 설정 파일들… 이것들이 한 번에 날아가면 정말 막막하거든요.

Duplicati 설정해두고 나서 대시보드에 “Last successful backup: 5 hours ago” 라고 뜨는 걸 보면 왠지 든든합니다. 자는 동안에도 알아서 구글 드라이브에 백업이 쌓이고 있으니까요.


Mark의 한마디: “백업은 필요 없다고 생각할 때 해두는 겁니다. 필요한 순간에 없으면 이미 늦었거든요. 구글 드라이브 무료 15GB면 충분하고, 암호화까지 되니까 구글에 맡겨도 안심입니다. 안 하면 손해예요 ㅎㅎ”

댓글 남기기