일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Java
- javscript
- solid
- Eclipse
- lambda calculus
- Pattern
- Spring
- Python
- 스택
- JavaScript
- 파이썬
- 람다 칼큘러스
- Network
- 백준
- 겨울카카오인턴
- functional programming
- 프로그래머스
- 큐
- DesignPattern
- 함수형 프로그래밍
- JDBC
- design-pattern
- 자바
- exception
- Collections
- Rails
- 로버트마틴
- Collection
- tcp
- 디자인패턴
Archives
- Today
- Total
개발자 노트
프로젝트 개요 본문
프로젝트 주제
win client와 ubuntu server 폴더를 동기화 하자!
목적
- win client에서 작업한 결과물을 ubuntuserver에 동기화해서 웹 서버 동작을 ubuntu에 분담하기 위해서.
- 장점
- iptime의 DDNS기능 이용 가능
- 서버가 위치가 고정된다
- 노트북의 cpu,memory 등 자원을 확보할 수 있다.
- 장점
특징
- win client -> ubuntu server로만 데이터를 보낸다. ftp 통신이다.
- win에서 변경하면 이 변경사항을 ubuntu server에 적용시키는 것. ubuntu의 변화는 win에 영향을 미치지 않는다. (win에서만 작업 수행.)
준비 작업
1. 두 컴퓨터간 동일한 환경으로 설정
- mysql - 8.0.19 (utf-8 설정)
- openjdk 14.0.1
- tomcat 8.5.xx
- eclipse 2020-03
- hook 설정
- eclipse를 통하지 않고 폴더를 수정하더라도 eclipse에 해당 내용을 반영 시킬 수 있다.
- hook 설정
2. 통신 설정
ubuntu server
- vsftpd 설치
- ftp통신 app
- tomcat, vsftpd 방화벽 포트 개방
- vsftpd 설치
win client
- ftp 프로그램 코드 작성
iptime
- ubuntu server ip로 ddns 설정
- ubuntu server ip,포트 에 대해 tomcat, ftp 포트포워딩
vmware (ubuntu server)
- 통신 방법을 브릿지로 설정
필요 기능
- client에서 server로 파일 전송.
- client에서 새로 만든 파일 전송
- client에서 수정한 파일 전송(덮어쓰기)
- client에서 삭제된 파일 server에서 삭제
기능 구현을 위한 자료구조와 알고리즘
자료구조
JSON이용.
{"path" : path, "fileName" : fileName, "hashValue" : hasValue}
가 하나의 파일을 의미한다. 이때 hashValue는 파일 내용을 해싱한 값.
path와 fileName이 운영체제 내 존재하는 파일을 유일하게 식별 가능토록 한다.
hashValue는 곧 파일 내용을 의미하므로 수정여부를 판단할 수 있다.
알고리즘
client -> server 파일 전송
파일을 새로 만들 경우
- server가 가지고 있는 파일을 기록한 DB에서 새로운 파일이 없으면 전송
수정한 파일 전송
server에 기록된 파일 중에 파일 내용이 다르면 전송.
이때, 수정한 파일을 확인하는 방법에 대해 생각좀 해봤다.
디스크 직접 수정시 수정기록이 안변할 수 있다하여 파일 내용을 읽은 뒤 hashFunction을 통해 대조할 것이다.
파일을 기록하는 이유는 통신비용때문(시간). 따라서 기록하여 보관해둔다.
client 삭제된 파일 server에서 파일 삭제
client기준 DB에 기록된 내용을 모두 확인할 때마다 기록된 파일을 삭제해준다.
그 뒤에 남은 파일목록들이 client에서 삭제된 파일을 의미하므로 그 파일들을 server에서 삭제해준다.
목표기간
하루
선택언어
JAVA
- 백엔드에서 spring때문에 java를 많이 사용하므로 java에 익숙해지기 위해.
토이프로젝트라고 하기 민망할 정도로 간단해보이는 것이나,
JERD, 의존성, 코드 재사용성 등을 잘해서 실력을 키워보자.
동기화 프로그램은 널렸지만 직접 만들어보고 싶었다.
반응형
'토이프로젝트 > 클라이언트-서버 폴더 동기화' 카테고리의 다른 글
배포시 문제 (0) | 2020.04.30 |
---|---|
ver 1.0문제 (0) | 2020.04.29 |
mavenProjectBuild문제 (0) | 2020.04.29 |
프로젝트를 진행하며 알게 된 것들. (0) | 2020.04.29 |
UML (0) | 2020.04.29 |
Comments