Dsync는 무엇인가요?
dsync는 ROKFOSS 프로젝트에서 제공하는 미러 동기화 프로그램입니다. 이 프로그램은 미러 서버를 운영하는 데 필요한 다양한 기능을 제공합니다. dsync는 사용자가 쉽게 설정하고 사용할 수 있도록 설계되었습니다.
다운로드는 아래 명령어로 가능합니다. (모든 리눅스에서 사용 가능)
2025년 10월 11일 기준 최신 버전은 25.10.2 입니다.
wget https://download.krfoss.org/dsync
chmod +x dsync
다양한 리눅스들의 패키지 관리자를 통한 설치를 지원합니다. 자신의 리눅스 환경에 맞는 적절한 명령어를 선택하여 실행하십시오.
데비안 계열
curl -fsSL http://pkg.krfoss.org/debian/script/install.sh | bash
RHEL 계열
curl -fsSL http://pkg.krfoss.org/rhel/script/install.sh | bash
Arch 계열
curl -fsSL http://pkg.krfoss.org/arch/script/install.sh | bash
이 스크립트를 통해 저장소 추가 또는 설치까지 한번에 끝낼 수 있습니다.
이제 설정하는 방법에 대해서 알아보겠습니다.
예를 들어서 kali 저장소를 일반 모드로 동기화하고 싶다면 아래와 같이 설정하면 됩니다.
일반모드
repo=kali
save=/mirrors/kali
이렇게 단 2줄만으로 설정할 수 있습니다. 이 설정은 kali 저장소를 /mirrors/kali 경로에 저장하는 것을 의미합니다.
ftpsync 모드
이번에는 kali 저장소를 ftpsync 모드로 동기화하고 싶다면 아래와 같이 설정하면 됩니다.
ftpsync 모드는 데비안에서 제공하는 ftpsync의 설정 파일과 동작을 그대로 재현한 호환 모드입니다. 이 모드를 사용하면 ftpsync를 사용한 것과 동일한 효과를 볼 수 있습니다.
이 모드는 기존 ftpsync의 설정 파일을 그대로 사용할 수 있습니다. 아래는 ftpsync 호환 모드를 켜고 사용한 예시입니다. ftpsync.conf에 있는 모든 내용들을 붙여넣고 사용할 수 있습니다.
이 설정에 나온 archive.kali.org는 일반적으로 접근할 수 없는 제한적인 미러입니다. 따라서 실제로 구성할 때는 공개된 다른 미러를 이용하는 것이 좋으며 dsync.krfoss.org는 ROKFOSS 프로젝트의 대표 미러입니다.
ROKFOSS 프로젝트의 미러를 이용하려면 dsync.krfoss.org를 사용하면 됩니다. 다만 사전에 아이피를 등록해야 하므로 [email protected]로 문의해주십시오.
repo=kali
save=/mirrors/kali
ftpsync=true
MIRRORNAME="mirror.krfoss.org"
TO="/mirrors/kali/"
RSYNC_HOST="archive.kali.org"
RSYNC_PATH="kali"
INFO_COUNTRY=KR
이와 같이 구성하고 ./dsync -nolog 명령어를 실행하면 동기화가 시작됩니다. 만약 백그라운드가 아닌 포그라운드에서 실행하고 싶다면 -nolog 옵션을 빼고 실행하면 됩니다.
dsync의 설정파일인 xync.conf는 어떻게 구성하나요?
dsync의 설정파일인 xync.conf는 아래와 같이 구성되어 있습니다.
# 전역 설정 파일 (xync.conf)
# 생성 시간: 2023-10-01 00:00:00
# 동시에 실행할 동기화 프로세스 수 (1~100, 기본값: 1)
# 서버 성능에 따라 조정하세요. 현재 서버에 %d개 CPU 코어가 있습니다.
syncps=1
# 동기화에 사용할 IP 주소 목록 (쉼표로 구분)
# 여러 회선이 있는 경우, 모든 회선의 대역폭을 활용할 수 있습니다.
# ipadd=192.168.0.102, 192.168.1.2, 192.168.2.1
# 인트라넷 모드 활성화 (true/false, 기본값: false)
# API 서버 대신 intradd 설정과 저장소 이름을 조합하여 rsync URL 구성
intra=false
# 로그 설정
# 저장소별 로그 디렉토리 사용 (true/false, 기본값: false)
logdir=false
# 타임스탬프 형식의 로그 파일 이름 사용 (true/false, 기본값: false)
logtime=false
# rsync 에러 무시 및 임시 파일 제외 설정 (true/false, 기본값: false)
# 활성화하면 임시 파일과 에러를 무시하고 계속 진행합니다.
pass-error-temp=false
# ROKFOSS 동기화 모드 (true/false, 기본값: false)
# ROKFOSS 미러 프로젝트에 참여한 경우에만 사용하세요. 그외에는 필요가 없습니다.
rokfoss-sync=false
# 웹훅 알림 URL (동기화 결과가 이 URL로 전송됨)
# webhookurl=https://hooks.slack.com/services/xxxx/yyyy/zzzz
# webhookurl=https://discord.com/api/webhooks/xxxx/yyyy
# 동기화 결과값을 저장하는 폴더
# 이 폴더 내 생성되는 파일을 이용하여 실시간으로 동기화 상태를 표시할 수 있습니다.
status=/mirror
설정 파일에는 주석이 달려있으니 주석을 참고하여 설정하면 됩니다. 그래도 설명이 필요하다면 아래를 참고하세요.
syncps
동기화에 사용할 프로세스 수를 설정합니다. 이 값은 서버 성능에 따라 조정할 수 있습니다. 기본적으로는 1개씩 동기화 하도록 설정되어 있습니다. 만약 동기화할 저장소가 많다면 이 숫자를 늘려서 여러 개를 한꺼번에 동기화할 수 있습니다. 단, 서버 성능에 따라 조정해야 하는 게 좋습니다.
ipadd
동기화에 사용할 IP 주소 목록을 설정합니다. 이 값은 쉼표로 구분하여 여러 개를 설정할 수 있습니다. 여러 회선이 있는 경우, 모든 회선의 대역폭을 활용할 수 있습니다. 예를 들어서 다음과 같이 설정해볼 수 있습니다.
ipadd=192.168.1.1,192.168.2.1,192.168.3.1
이렇게 설정하면 3개의 IP 주소를 사용하여 동기화할 수 있습니다. 단 모두 같은 회선인 경우 큰 효과를 보지 못할 수 있습니다. 여러 개의 회선을 사용하고 있는 망 이중화가 된 경우에 유용합니다.
intra
인트라넷 모드를 활성화합니다. 이 값은 true 또는 false로 설정할 수 있습니다. 기본값은 false입니다. 이 값을 true로 설정하면 API 서버 대신 intradd 설정과 저장소 이름을 조합하여 rsync URL을 구성합니다. 즉, 내부망에서만 사용할 수 있는 경우에 유용합니다.
다음은 인트라넷 모드를 xync.conf에서 활성화한 후의 예시입니다. 파일 이름은 kali.conf라고 가정하겠습니다.
# kali.conf 예시
repo=kali
save=/mirror/kali
ftpsync=true
# 인트라넷 내부 미러 서버 주소
intraadd=10.1.1.50
이렇게 설정하면 API 서버로부터 주소를 받아오지 않고 프로그램이 인트라 미러 주소를 조합하여 rsync URL을 구성합니다. 즉, rsync://10.1.1.50/kali와 같은 주소로 동기화가 진행됩니다.
logdir
로그 디렉토리를 저장소별로 사용합니다. 이 값은 true 또는 false로 설정할 수 있습니다. 기본값은 false입니다. 이 값을 true로 설정하면 저장소별로 로그 디렉토리를 생성하여 로그를 저장합니다. 즉, 각 저장소마다 별도의 로그 파일을 생성합니다.
예를 들어서 활성화된 저장소 파일이 다음과 같이 있다고 가정해보겠습니다.
- kali.conf
- ubuntu.conf
- debian.conf
이제 logdir=true로 설정하면 기존에는 모두 하나의 폴더에서 온갖 로그 파일로 어지러웠던 로그 파일들이 아래와 같이 저장됩니다.
~/dxync/logs/debian/
~/dxync/logs/kali/
~/dxync/logs/ubuntu/
이렇게 하면 로그 파일을 관리하기가 훨씬 수월해집니다.
logtime
타임스탬프 형식의 로그 파일 이름을 사용합니다. 이 값은 true 또는 false로 설정할 수 있습니다. 기본값은 false입니다.
이 값을 true로 설정하면 로그 파일 이름에 타임스탬프를 추가하여 저장합니다. 즉, 로그 파일 이름이 logs-20250514-0603.log와 같은 형식으로 저장됩니다. 단 이 설정을 단독으로 사용하게 되는 경우 매우 혼란스러워질 수 있으니 반드시 logdir와 함께 사용해야 합니다.
logdir=true
logtime=true
pass-error-temp
pass-error-temp는 동기화 중에 발생하는 오류를 무시하고 계속 진행하도록 설정하는 옵션입니다. 이 값은 true 또는 false로 설정할 수 있습니다. 기본값은 false입니다. 이 값을 true로 설정하면 동기화 중에 발생하는 오류를 무시하고 계속 진행합니다. 또한 임시로 생성되는 파일들을 받지 않고 넘어가도록 해줍니다.
pass-error-temp=true
rokfoss-sync
rokfoss-sync는 ROKFOSS 미러 프로젝트에 참여하게 되는 경우 필요한 옵션입니다.
webhookurl
동기화 결과를 웹훅으로 전송할 URL을 설정합니다. 이 값은 Slack, Discord 등 다양한 웹훅 서비스에 사용할 수 있습니다.
status
동기화 상태를 실시간으로 저장할 폴더를 설정합니다. 결과값은 설정한 폴더 내에 dsync-status 라는 폴더가 별도 생성되며 해당 폴더 내에 사용자가 미러링 중인 저장소들의 동기화 상태값이 저장됩니다.
예시로 repo=ubuntu 가 있다면 해당 저장소의 실제 결과 저장값은 설정경로/dsync-status/ubuntu로 저장됩니다.
파일 내부에는 다음과 같은 값이 저장되며 웹사이트에서 동기화 상태 표시에 사용할 수 있습니다.
0은 동기화가 실패함을 나타냅니다.
1은 동기화가 성공함을 나타냅니다.
2는 동기화가 진행 중임을 나타냅니다.
이제 설정하는 방법에 대해서는 모두 알아보았습니다. 명령어에 대해서 알아보겠습니다.
dsync 명령어 종류
dsync는 다양한 명령어를 제공합니다. 아래는 dsync에서 제공하는 명령어 목록입니다.
| 사용할 수 있는 옵션들 | 설명 |
|---|---|
dsync |
dsync를 실행합니다. 이렇게 실행하면 포그라운드에서 실행되므로 모든 동기화가 끝날 때까지 계속 프로그램이 터미널에 내용을 출력하게 됩니다. |
dsync -nolog |
이렇게 실행하면 프로그램은 백그라운드에서 실행되게 되고 터미널에는 동기화가 시작되었다는 메시지만 출력하게 됩니다. nolog 모드에서는 터미널창을 닫아도 문제 없습니다. |
dsync -emoff |
동기화를 긴급히 중단합니다. 이 경우에는 각 저장소 폴더마다 긴급종료를 했음을 알리는 파일이 생성됩니다. 다시 동기화를 시작하게 되면 해당 파일들은 자동으로 제거됩니다. |
dsync -test |
저장소 설정 파일들이 모두 잘 설정되었는지 검증하고 폴더 권한 문제는 없는지 확인하며 원격지 서버와 잘 연결을 맺었는지를 확인합니다. |
dsync -force |
문제가 있어도 그냥 무조건 실행해버립니다. 이 경우 손상 또는 문제가 발생할 수 있으니 테스트 환경에서만 사용해야 합니다. |
dsync -cleanlog |
7일 이상 지난 로그들을 정리해줍니다. 일반적으로 이 옵션을 사용할 일은 거의 없습니다. 왜냐하면 dsync가 자동으로 오래 된 로그들을 제거하기 때문입니다. |
dsync -setup |
dsync를 간편하게 설정할 수 있습니다. https://setup.krfoss.org 에서 먼저 설정 링크를 만든 후에 붙여넣기를 해주세요. |
dsync -gendsync |
DTP 전송을 위한 구조파일을 생성합니다. dsync=true가 있는 저장소 설정 파일에 대해서만 동작합니다. |
dsync -sync 저장소명 |
특정 저장소 1개만 동기화 할 때 쓰이는 옵션입니다. 지정된 저장소 외 다른 것들은 동기화 작업을 진행하지 않습니다. |
이렇게해서 dsync의 명령어에 대해서 알아보았습니다. 만약 문제가 발생한다면 ROKFOSS 커뮤니티에 가입해서 이를 제보하거나 프로젝트 공식 메일인 [email protected]로 메일을 보내주시면 됩니다.
이용에 관련한 문의의 경우에도 커뮤니티를 방문해주세요!
dsync의 특징
dsync는 앞서 설명했던 기능들과 함께 다양한 특징을 가지고 있습니다. 아래는 dsync의 주요 특징입니다.
- 여러 개의 저장소 설정파일을 쉽게 추가하거나 수정, 제거할 수 있습니다.
- 스크립트 방식과 동일하게 로그 회전 기능을 통해 로그가 무한히 쌓이는 걸 방지합니다.
- 설정 테스트를 지원해서 설정파일이 문제가 없는지, rsync 연결은 잘 되는지 확인할 수 있습니다.
- ftpsync 모드를 지원합니다.
- 이 기능은 ftpsync의 설정 파일을 그대로 dsync 설정 파일에 옮겨 놓으면 사용할 수 있도록 해주는 기능입니다. 이 기능을 사용하려면 아래 예시를 참고해주세요.
repo=ubuntu save=/mirror/ubuntu ftpsync=true (ftpsync의 설정 파일 내용들...)
- 이 기능은 ftpsync의 설정 파일을 그대로 dsync 설정 파일에 옮겨 놓으면 사용할 수 있도록 해주는 기능입니다. 이 기능을 사용하려면 아래 예시를 참고해주세요.
- 인트라망에서 인트라망으로 동기화를 해야 하는 경우
intradd=아이피주소옵션을xync.conf에서 설정해주면 인트라망 내에서 동기화 작업을 진행할 수 있습니다. - 로그 파일의 형식을 지정할 수 있습니다.
- 기본적으로 설정파일명 기준으로 로그파일이 생성되는데
xync.conf에서logtime=true옵션 활성화를 통해서 로그 파일을 타임스탬프 형식으로 바꾸도록 강제할 수 있습니다.
- 기본적으로 설정파일명 기준으로 로그파일이 생성되는데
- 알 수 없는 오류로 일시적인 동기화 실패를 겪게 되는 경우 프로그램이 최대 3번까지 재시도를 하게 됩니다.
- 서버와 갑작스레 연결이 끊긴 경우에 대응이 가능합니다.
- 단 2줄만으로 설정이 가능하기 때문에 유지보수가 편리합니다.
- 동기화 가능한 저장소 목록을 실시간으로 받아오기 때문에 직접 동기화할 서버의 주소를 찾을 필요가 없습니다. 우분투를 하려면 #우분투 처럼 저장소 종류만 바꿔주면 됩니다.
- 락 파일을 생성해서 중복으로 작업하지 않도록 해줍니다.
- 사용자가 모르고 또 실행하더라도 프로그램이 자동으로 인지하고 이미 동기화 중인 프로세스가 있다면 스킵합니다.
- 다중 IP 기능을 지원합니다.
- 서버에 공인아이피 또는 여러 개의 망과 연결된 라우터로부터 사설 아이피를 받았을 때 해당 아이피들을 모두 사용해서 파일을 다운로드 할 수 있습니다.
- 예를 들어서 192.168.0.2는 KT공유기, 192.168.1.2는 SKB 공유기라고 한다면 이 2개의 아이피들을 모두
xync.conf에 있는 옵션인# ipadd=에 넣어서 동기화를 하도록 할 수 있습니다.ipadd=192.168.0.2,192.168.1.2이렇게 설정하면 됩니다. 단
,에 공백을 만들지 마세요. 모두 붙여서 사용해야 합니다.
- 예를 들어서 192.168.0.2는 KT공유기, 192.168.1.2는 SKB 공유기라고 한다면 이 2개의 아이피들을 모두
- 서버에 공인아이피 또는 여러 개의 망과 연결된 라우터로부터 사설 아이피를 받았을 때 해당 아이피들을 모두 사용해서 파일을 다운로드 할 수 있습니다.
- 여러 개의 저장소 동기화 작업을 한꺼번에 진행할 수 있고 동시에 몇 개씩 진행할지 커스텀이 가능합니다.
xync.conf에 있는syncps=값을 원하는 값으로 조절하기만 하면 됩니다.syncps=20이라면 동시에 20개씩 동기화를 진행합니다.
- 각 저장소마다 언제언제 동기화할지 시간을 정할 수 있습니다.
- 이는 각 저장소 설정 파일들을 열어서 다음과 같은 값들을(예시) 넣어주기만 하면 됩니다.
timeset=00,06,12,18이건 00시 06시 12시 18시에만 해당 저장소를 동기화 하도록 합니다. 만약 프로그램이 14시에 실행되었다면 해당 저장소가 동기화하도록 지정된 시간에 해당되지 않기 때문에 해당 저장소는 동기화 작업을 스킵합니다.
00:12같은 분단위 지정은 지원하지 않으니 꼭 24시간 단위로 시간만 입력하십시오. 오후 1시에 한다고 해서오후01이렇게 넣으면 오류를 일으킵니다.
- 이는 각 저장소 설정 파일들을 열어서 다음과 같은 값들을(예시) 넣어주기만 하면 됩니다.
- DTP 전송을 통해 파일 동기화 시간을 크게 줄일 수 있습니다. 기존 rsync와 유사하게 동작하지만 data.dsync라는 구조 파일을 통해 동기화를 진행하게 됩니다.
- 각 저장소마다 다음과 같은 설정을 통해 DTP를 사용하는 상위 미러로부터 동기화할 수 있습니다.
dsync=true dsync-url=dtp://주소/저장소명
- 각 저장소마다 다음과 같은 설정을 통해 DTP를 사용하는 상위 미러로부터 동기화할 수 있습니다.
각 저장소 설정 파일은 어떻게 구성하나요?
앞서 설명했던 내용들을 그대로 응용할 수 있습니다.
아래는 저장소 설정 파일의 예시입니다.
repo=ubuntu
save=/mirror/ubuntu
timeset=00,06,12,18
이렇게 설정하면 repo는 저장소 이름을 의미하고 save는 파일을 저장할 경로를 의미합니다. timeset은 동기화할 시간을 설정하는 옵션입니다. 이 값은 24시간 단위로 설정해야 합니다. 예를 들어서 00,06,12,18으로 설정하면 00시 06시 12시 18시에만 동기화합니다.
ftpsync 모드를 하고자 한다면 위에서 설명했던 ftpsync 모드와 같이 설정하면 됩니다.
dsync는 무엇으로 만들어졌나요?
dsync는 빠르고 가벼운 언어인 Go로 만들어졌습니다. Go는 구글에서 만든 언어로 빠르고 가벼운 언어입니다.
Go 공식 사이트에서 Go 언어에 대해서 자세히 알아볼 수 있습니다.
dsync를 사용하기 위해 Go 언어를 설치할 필요는 없습니다. dsync는 Go 언어로 작성된 바이너리 파일이기 때문에 Go 언어가 설치되어 있지 않아도 사용할 수 있습니다. 단 리눅스 환경에서만 실행되므로 윈도우 환경에서는 사용할 수 없습니다.
만약 기능 제안을 하고 싶다면 ROKFOSS 커뮤니티에 가입해서 여러분의 아이디어를 제안해주시면 됩니다. 또는 공식 메일인 [email protected]에 제안해주셔도 됩니다.
유료인가요?
아니요. dsync는 누구나 사용할 수 있도록 하기 위해 무료로 배포하고 있습니다.
dsync의 유지보수는 ROKFOSS팀에서 하고 있습니다. 만약 dsync를 사용하면서 문제가 발생한다면 ROKFOSS 커뮤니티에 가입해서 도움을 요청해주시면 됩니다. 또는 공식 메일도 가능합니다.
dsync의 최신 업데이트 소식을 받고 싶다면 이 또한 ROKFOSS 커뮤니티에 가입해서 확인하실 수 있습니다.
안전한가요?
네. dsync는 안전합니다. 이 링크에 있는 검사 결과를 보면 알 수 있듯이 모든 백신프로그램이 Clean하다고 판단했습니다. 이는 dsync가 악성행위를 하지 않음을 의미합니다.
원한다면 직접 사이트에서 재검사(Reanalyze) 버튼을 눌러서 재검할 수 있습니다. 바이러스토탈은 유명한 사이트로 여러 개의 백신 프로그램을 사용하여 파일을 검사해주는 사이트입니다. 이 사이트에서 모든 백신들이 Clean하다고 나왔다면 안전하다고 볼 수 있습니다.
만약 안전하다고 생각되지 않는다면 일반 스크립트 파일을 활용하여 동기화 작업을 진행할 수 있습니다. 아래 명령어를 확인하여 스크립트 파일을 다운로드하여 사용하면 됩니다.
dsync-m.sh 스크립트 파일은 2025년 4월 이후로 업데이트가 중단되었습니다. 하지만 여전히 사용할 수 있으며 라이선스에 따라 자유롭게 수정 및 재배포 할 수 있습니다.
cd ~; mkdir rsync
wget https://download.krfoss.org/dsync-m.sh
chmod +x /root/rsync/dsync-m.sh