2025. 7. 19. 00:04ㆍ개발환경구축
시놀로지 드라이브를 이용해 프로젝트를 동기화해서 사용하면, 사무실과 집 또는 다른 장소에서 손쉽게 프로젝트를 다양한 곳에서 동기화된 프로젝트 소스를 공유해서 사용할 수 있어서 매우 편리합니다.
그런데, 프로젝트의 소스는 synology drive client로 동기화 되어있고 .git도 공유될 수 밖에 없는데, 이는 프로젝트 동기화중 .git내의 cache등으로 동기화 문제가 발생되곤 합니다. 동기화에 문제가 생긴다는 것은 해당 동기화 오류로 더이상 시놀로지 동기화를 사용할 수 없다는 의미와 같습니다.
그래서 오늘은 어떻게 하면 .git관련 디렉토리를 동기화에서 제외하고 현명하게 프로젝트 디렉토리를 동기화 할 수 있는지를 알아보려 합니다.
1. Synology Drive Client를 활용한 데이터 동기화
시놀로지 NAS를 사용하는 경우 Synology Drive Client를 활용하여 여러대의 컴퓨터에서 데이터 동기화가 가능해집니다. 시놀리지로부터 다운받은 Synology Drive Client를 설치하고 간단한 설정만으로 데이터 동기화가 가능합니다.
Synology 데이터 동기화 아키텍처
Synology Drive Client를 이용한 동기화 특성 및 기능
- Synology Drive Client 프로그램은 컴퓨터와 Synology Drive Server 간에 파일과 폴더를 동기화하여 파일 탐색기를 통해 파일 액세스, 탐색 및 공유하는 데스크톱 응용 프로그램
- 클라이언트 측에서 파일과 폴더를 복원하는 기능을 사용하여 로컬 컴퓨터에서 Synology Drive Server로 컴퓨터를 실시간 또는 예약 백업
- Synology NAS에 Synology Drive Server 패키지를 설치해야 함
- 지원되는 운영 체제는 윈도우 10 이상, macOS 10.14 이상, Ubuntu 20.04이상 모두에서 설치 가능하여 다양한 환경에서 사용 가능
- Windows 환경용 Synology Drive Client로 동기화 작업을 최대 64개까지 만들 수 있음
- 컴퓨터 용량 사용과 서버의 오버헤드와 저장소 공간을 줄여주는 "요청 시 동기화" 기능을 활용할 수 있음(Windows 10 버전 1809, macOS 12.3 이상 버전에서 사용 가능)
- Synology Drive Server의 내 파일, 팀 폴더 및 나와 공유됨 폴더와 동기화하여 로컬 컴퓨터의 파일 탐색기에서 파일 액세스 가능
- 다양한 공동 작업 요구 사항을 충족하는 양방향 동기화 또는 단방향 업로드/다운로드
- 각 동기화 작업의 파일 이름, 파일 확장명 및 최대 파일 크기를 블랙리스트에 추가하여 동기화 제외 화일 등록 기능
- 다양한 백업 요구 사항이 충족되도록 연속, 수동 또는 예약 모드를 사용하여 유연하게 백업 설정
- 다운로드, 삭제, 이름 변경 등 파일 조작을 모니터링 및 로깅
제한 사항
- 각 Synology Drive Client에서 동기화할 수 있는 최대 파일 수 500,000개. 이 수치를 초과하면 응용 프로그램 성능이 저하되고 예상치 못한 오류가 발생할 수 있음
- Synology Drive 동기화 작업에서는 특정 파일과 드라이브 유형을 지원하지 않음 (다양한 개발관련 캐시 및 오브젝트파일 등)
- .pst 파일에서는 휴대성이 보장되지 않으므로 .pst 파일을 지원하지 않음
- 계정 하나에 백업 작업 하나만 설정 가능
- 동기화 작업에 이미 동기화된 폴더나 동기화된 폴더의 상위 또는 하위 폴더를 선택할 수 없음
- 로컬 폴더에 기타 파일 프로토콜을 통해 탑재된 폴더가 포함된 경우 Synology Drive에서 탑재 지점 내 파일 변경 사항을 감지할 수 없으므로 이 탑재 지점 내 파일이 동기화되지 않을 수 있음
- 요청 시 동기화의 제약 사항
- 요청 시 동기화 작업에 Synology Drive의 요청 시 동기화, OneDrive의 File On-Demand 또는 iCloud Drive로 이미 동기화된 로컬 파일과 해당 하위 폴더를 선택할 수 없음
- 루트 드라이브 디렉토리(예: C:\ 및 D:)와 홈 디렉토리(예: C:\Users<사용자 이름>)를 요청 시 동기화 폴더로 선택할 수 없음
Synology Drive Client 다운로드
Synology Drive Client 다운로드 : https://www.synology.com/ko-kr/support/download
- 사용하는 제품 범주와 해당 모델은 "NAS"와 실제 사용하는 모델을 선택하세요.
- 검색 결과에서 "데스크톱 유틸리티" 탭을 선택하세요.
- "Synology Drive Client"의 [다운로드]버튼을 클릭하시고, 사용하는 PC의 운영체제에 맞는 프로그램을 다운로드 하세요.
2. 시놀로지 동기화 시 Git 레포지토리를 제외하는 방법
Synology Drive Client로 동기화하면서 Git 레포지토리 (.git 폴더) 자체를 동기화하면 충돌과 불필요한 캐시 파일 동기화 문제가 자주 발생합니다. 특히 .git/index.lock, .git/objects/pack, .git/logs 등은 로컬 상태가 달라지기 때문에 충돌이 발생할 확률이 높습니다.
보통 다음과 같은 방식으로 설정합니다:
- 프로젝트 소스 코드 및 설정 파일만 동기화
- .git 폴더 자체는 동기화 대상에서 제외 (권장)
예시 Synology Drive Client Ignore 규칙
Synology Drive Client에서는 .synologydrive-ignore 파일 또는 클라이언트 설정의 동기화 제외 규칙을 사용하세요.
# .synologydrive-ignore
# Git 관련 파일/폴더 무시
.git/
.synologydrive-ignore 파일은 동기화하려는 각 폴더의 최상위 경로에 직접 생성해서 사용합니다.
Git의 .gitignore 처럼 개별 폴더별로 적용할 수도 있으며, Synology Drive Client가 해당 폴더를 동기화할 때 제외 규칙으로 인식합니다.
예를 들어 동기화하려는 프로젝트 폴더 구조가 다음과 같다면, .synologydrive-ignore 파일은 MyProject/ 폴더에 둡니다.
/Users/username/Projects/MyProject/
├── src/
├── .git/
├── .synologydrive-ignore
├── README.md
└── main.py
특정 하위 폴더만 별도로 무시 규칙을 적용하고 싶다면, 그 폴더에도 .synologydrive-ignore 파일을 둘 수 있습니다.
/Users/username/Projects/MyProject/
├── src/
│ ├── .synologydrive-ignore # src 폴더 전용 무시 규칙
│ └── temp/
├── .git/
├── .synologydrive-ignore # 프로젝트 전체용 무시 규칙
└── README.md
그래도, 최상위 폴더에 하나만 두고 전체 관리하는 것이 편리합니다.
만약 꼭 .git 폴더를 동기화해야 하는 특수한 경우라면
이 방법은 추천하지 않지만, 특별한 경우 동기화가 필요할 경우에 제한적으로 사용합니다.
- 아래처럼 일부 하위 폴더나 파일만 무시하도록 설정 파일에 추가합니다.
# .synologydrive-ignore
.git/index.lock
.git/ORIG_HEAD
.git/logs/
.git/refs/
.git/objects/
.git/info/exclude
또한, 개별 프로젝트에는 별도로 .gitignore를 설정하시는 것도 잊으시면 안됩니다.
3. git push/pull로 코드 이력만 동기화
Synology Drive Client로 이미 폴더가 동기화 되고 있는데, 왜 Git 이력을 동기화해야만 할까요?
- Synology Drive는 단순히 현재 파일 상태만 동기화합니다.
- Git 이력 (git log, git branch, git stash, .git/objects/* 등)은 로컬에서만 관리됩니다.
- 따라서 집/사무실 각각에서 동기화된 소스 코드에는 버전 관리 히스토리가 없거나 불일치할 수 있습니다.
결과적으로 Synology Drive는 Git의 대체제가 될 수 없습니다. Git은 소스의 상태 및 변경상태를 관리하는 소스코드 버전관리시스템으로 여러 곳 또는 여러 명이 소스에 접근하는 경우의 소스코드 변경이력을 관리합니다. Git의 다양한 명령어를 통해서 여러 곳에서의 동시작업이 가능해지고, 잘못되거나 충돌이 발행사는 경우를 해결할 수 있습니다.
추천하는 git push/pull 워크플로우
1) Git 리모트 저장소 사용
- GitHub, GitLab, Bitbucket, Synology Git Server 등 아무거나 사용 가능
- 둘 다 개인 작업이면 private repo 사용 가능
- 리모트 저장소 하나를 만들어 주세요.
cd 프로젝트폴더
git remote add origin https://github.com/USERNAME/REPO.git
git push -u origin main
2) 집 & 사무실에서 Git pull / push
- 집: 변경 후 → git add, git commit, git push
git add .
git commit -m "작업 내용"
git push
- 사무실: 작업 시작 전 → git pull
cd 프로젝트폴더
git pull
3) Synology Drive는 백업 또는 보조 용도로만 사용
- git 관리와 별개로, Synology Drive로 소스 코드가 자동으로 백업됨
- 하지만 동기화 충돌 방지를 위해 .git/ 폴더는 Sync에서 제외하세요
4. .synologydrive-ignore 규칙 작성법
.synologydrive-ignore 파일은 Git의 .gitignore처럼 작성하지만 형식이 약간 다릅니다.
# Git 관련 폴더 및 파일 제외
.git/
# Python 가상환경 폴더 제외
.venv/
env/
# Python 캐시 제외
__pycache__/
*.pyc
# 임시 및 백업 파일 제외
*.log
*.tmp
*~
# Mac OS 임시파일
.DS_Store
# 빌드 폴더
build/
dist/
- 경로 구분자는 항상 / 사용 (Windows도 동일)
- 폴더는 / 로 끝나야 폴더로 인식합니다
- 공백 없는 간단한 형식만 지원 (복잡한 정규식은 불가)
패턴예시 | 설명 |
folder/ | folder 폴더 전체 제외 |
*.log | 모든 .log 파일 제외 |
temp/* | temp 폴더 내 모든 파일 제외 (하위 폴더 포함 X) |
temp/** | temp 폴더 및 그 하위 폴더 모두 제외 |
.DS_Store | 특정 이름 파일 제외 |
!important.txt | 제외 목록에서 다시 포함 (우선순위 역전) |
5. Synology Drive Client GUI에서 제외 규칙 설정하기
Synology Drive Client가 설치되면, Windows / macOS 모두 동일한 GUI 인터페이스를 가지고 있으므로 설정방법은 동일합니다.
1) Synology Drive Client 열기
- 작업 표시줄 (Windows) 또는 메뉴 막대 (macOS)에서 Synology Drive Client 아이콘 클릭
- [Sync Tasks : 동기화 작업 관리] 선택
2) 동기화 작업 선택 후 [편집] 클릭
- 동기화 작업 목록에서 현재 사용하는 동기화 폴더 선택
- [Sync Rules : 편집] 버튼 클릭
3) [고급 설정] → [필터] 탭 이동
- [고급 설정] 클릭 후 [File Fileter : 필터] 탭으로 이동
4) 제외할 파일/폴더 패턴 추가
- [동기화 제외 규칙] 항목에서 [추가] 클릭
- 예시로 아래와 같이 입력:
- *.log : 로그 파일 제외
- .git/ : Git 폴더 제외, '.git'만 등록해서 사용하셔도 됩니다. (macOS의 경우 폴더 '/'를 입력할 수 없음)
- __pycache__/ : Python 캐시 제외
- *.pyc : 컴파일된 Python 파일 제외
5) 저장 후 동기화 재시작
GUI vs .synologydrive-ignore 차이
저의 경우는 간편하게 동기화되는 드라이브의 최상위 폴더에 .synologydrive-ignore에 설정해서 사용합니다.
구분 | 권장 상황 |
.synologydrive-ignore | 폴더 안에서 규칙을 관리하고 싶을 때 |
GUI 설정 | 간단하게 설정하거나 폴더별로 다르게 할 때 |

'개발환경구축' 카테고리의 다른 글
Git을 이용한 브랜치(Branch) 실용 가이드 (2) | 2025.07.14 |
---|---|
Git을 이용한 GitHub 활용 실제 (4) | 2025.07.02 |
Arduino IDE vs PlatformIO 개발 플랫폼 선택 (9) | 2025.07.01 |
PlatformIO 설치 및 활용 : 초보자 가이드 (7) | 2025.06.30 |