Relayium

두 서버 사이에서 큰 폴더 동기화하기(재개 가능, 백그라운드)

마지막 업데이트: 2026-07-08

한 서버에 큰 폴더——수십 GB——가 있고, 다른 서버에 똑같은 복사본을 원한다고 합시다. 몇 시간 동안 터미널을 지켜볼 수도 없고, 도중에 죽은 전송이 처음부터 다시 시작되어서도 안 됩니다. relayium sync는 바로 이를 위해 만들어졌습니다. 이미 있는 것은 건너뛰고, 절반만 보낸 파일은 멈춘 지점부터 재개하며, 모든 파일을 끝에서 끝까지 검증하는 단방향 증분 미러입니다.

이 가이드는 무인으로 스스로 복구하는 전송을 구성합니다. 보내는 쪽을 한 번만 승인하고, 리스너를 백그라운드에서 돌리고, tmux 안의 재시도 루프로 relayium sync를 구동해 연결이 끊겨도 계속 진행하여 폴더 전체가 도착할 때까지 실행합니다.

왜 relayium sync가 이 작업에 맞나

sync는 네이티브 프로토콜 위의 단방향 증분 미러입니다(양쪽 끝에 relayium을 설치). 무인으로 반복 실행해도 안전한 이유가 세 가지 있습니다:

사전 준비

양쪽 서버에 relayium을 설치하세요(sync는 네이티브 프로토콜을 쓰므로 각 끝에 필요합니다):

# on BOTH servers
curl -fsSL https://relayium.com/install.sh | sh

보내는 쪽을 한 번만 승인하기(받는 쪽)

받는 쪽은 보내는 기기를 한 번만 승인합니다. 승인은 디스크에 기록되어 재시작을 넘어 유효하므로 반복할 필요가 없습니다. 먼저 터미널에서 리스너를 포그라운드로 시작하고, --dir을 부모 디렉터리로 향하게 하세요——relayium sync /root/workspace는 받는 쪽에서 workspace/...를 재현하므로, --dir /root이면 파일이 /root/workspace/에 안착합니다.

보내는 쪽의 첫 연결 시(다음 절), serve가 그 주소와 핑거프린트를 보여주며 승인을 요청합니다. y라고 답하면 영구적으로 기억됩니다:

# on the RECEIVER (foreground, to approve interactively)
relayium serve --dir /root --port 9031
# on the RECEIVER, at the first connection:
Incoming push from 203.0.113.9:52140
  fingerprint: 9f2c41ab…
Accept and remember this peer? [y/N] y

리스너를 백그라운드로 돌리기(받는 쪽)

핑거프린트를 승인했으면 포그라운드 serve를 멈추고(Ctrl-C), 로그아웃 후에도 살아남도록 분리해서 다시 실행하세요. 저장된 핑거프린트를 불러와 보내는 쪽을 조용히 받아들입니다——이번엔 프롬프트가 없습니다:

# on the RECEIVER
nohup relayium serve --dir /root --port 9031 > ~/relayium-serve.log 2>&1 &

tmux 안의 재시도 루프로 sync 돌리기(보내는 쪽)

긴 전송은 중단됩니다——세션 끊김, 불안정한 네트워크, 재부팅. 해결책은 멋진 도구가 아니라 sync를 성공할 때까지 다시 실행하는 루프와, 로그아웃 후에도 살아남게 하는 터미널 멀티플렉서입니다. 여기서는 tmux가 nohup보다 깔끔합니다: 틀리기 쉬운 출력 리다이렉트가 없고, 다시 붙어 진행 상황을 볼 수 있습니다.

tmux 세션을 시작한 뒤 until 루프로 미러를 실행하세요——10초마다 재시도하고 sync가 성공을 반환하면 스스로 종료합니다:

# on the SENDER
tmux new -s xfer      # apt install -y tmux if it's missing
until relayium sync /root/workspace relayium://203.0.113.43:9031; do echo "$(date) retrying"; sleep 10; done

검증과 마무리

until 루프가 끝나고 평범한 셸 프롬프트로 돌아오면 전송이 완료된 것입니다. 양쪽이 일치하는지 확인한 뒤 리스너를 멈추세요:

# compare totals on BOTH servers
du -sh /root/workspace
# on the RECEIVER, once verified
pkill -f 'relayium serve'

문제 해결

문제처럼 보이지만 대개 아닌 몇 가지——그리고 대개 진짜 문제인 하나(포트 차단)입니다.

자주 묻는 질문

전송이 도중에 중단되면 어떻게 되나요?

아무것도 잃지 않습니다. relayium sync를 다시 실행하세요——받는 쪽에 이미 있는 파일은 건너뛰고, 절반 보낸 파일은 디스크에 이미 있는 바이트 오프셋부터 재개합니다. 이 가이드의 until 루프가 폴더 전체가 미러될 때까지 이를 자동으로 합니다.

이것은 rsync와 무엇이 다른가요?

둘 다 증분 단방향 미러링을 하지만, relayium sync는 고정된 TLS 연결로 동작하고 SSH 계정이 필요 없으며(데몬 다이렉트), 인증서 핑거프린트로 두 기기를 인증하고, 모든 파일을 SHA-256으로 검증합니다. relayium의 다른 모드와 같은 전송 엔진입니다.

sync는 소스에서 지운 파일을 받는 쪽에서도 지우나요?

요청할 때만요. 기본적으로 sync는 추가와 갱신만 합니다. 삭제를 미러링하려면 --delete를 넘기고, 그것이 적용되려면 받는 쪽이 --allow-delete로 serve를 실행해야 합니다——그렇지 않으면 삭제는 무시되고 보고됩니다.

두 폴더를 계속 동기화 상태로 유지할 수 있나요?

네. --watch를 붙이면 sync가 계속 실행되며 소스 아래의 어떤 변경에도 다시 미러링합니다. 큰 폴더를 한 번 옮기는 데는 필요 없습니다——재시도 루프와 평범한 sync면 충분합니다.

포트를 열어야 하나요?

데몬 다이렉트라면 네——리스너 포트(기본 9031)가 보내는 쪽에서 도달 가능해야 합니다. 포트를 열고 싶지 않고 서버 사이에 이미 SSH가 있다면 sync는 SSH로도 동작합니다: relayium sync /path user@host:/path(원격에 relayium이 필요).

당신 소유의 두 서버 사이에서 폴더를 미러링하세요——증분, 재개 가능, 지켜볼 필요 없이.

CLI 받기

계속 읽기