티스토리 뷰

728x90
반응형

프로젝트중에서 파일 카피를 해야 하는 이슈에 대한 방법 중 하나로 정리합니다.

 

우선 Windows 간의 데이터 카피이며

한쪽 Windows서버는 IDC에 있고 데이터 카피를 위한 중계서버 AWS상의 Windows 인스턴스로 카피하여

AWS상의 Windows에서 S3로 데이터복제하는 것입니다.

 

해당 구간 IDC - AWS 간 카피는 10G 구간으로 20mbps 아래의 속도로 카피했는데 그 방법은 robocopy입니다.

처음 윈도우상에서 공유카피했더니 우와... 시간이 ㅎㅎ

관련 병렬카피라며... 다만 조심해야죠. 옵션잘주어서 동기 맺을 때 날리지 않도록 ㅎㅎ

 

명령어는 아래와 같은 예시로 사용하면 됩니다.

※필수적으로 아래의 명령커맨트를 치실 명령프롬프트는 관리자권한으로 실행하고 하셔야 합니다.

아래의 예시는 /maxage(날짜보다 오래된 파일 제외 )와 /XD (특정폴더 제외)를 적용한 예시입니다.

## robocopy 명령어 예시
robocopy F:\Repo \\xxx.xx.xx.xxx\d\Repo /MT:20 /R:2 /W:1 /B /MIR /IT /COPY:DATSO /DCOPY:DAT /NP /NFL /NDL /maxage:20230101 /XD "System Volume Information" /UNILOG:"\\xxx.xx.xx.xxx\d\Result-repo.txt"

위의 명령어를 설명하면 F드라이브의 Repo 폴더의 모든 내용을 아주 스피디하게 복사를 하겠다는 것 예를 들면 로그를 일반 log가 아니고 UNI로 상세한 설명은 아래에 왜 저렇게 옵션을 했는지 친절하게 설명되어 있습니다.

 

참고 URL : 

https://learn.microsoft.com/ko-kr/azure/storage/files/storage-files-migration-robocopy

 

RoboCopy를 사용하여 Azure 파일 공유로 마이그레이션

RoboCopy를 사용하여 SMB Azure 파일 공유로 파일을 이동하거나 마이그레이션하는 방법을 알아봅니다.

learn.microsoft.com

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy

 

robocopy

Reference article for the robocopy command, which copies file data from one location to another.

learn.microsoft.com

 

혹시 아래와 같은 에러가 보인다면? 머 한글로는 사용자 이름과 패스워드 얘기한다면~

Logon failure: unknown user name or bad password.
## net use 명령어로 커넥션~
net use \\xxx.xxx.xxx.xxx\d\Repo /user:...[계정]...

해당 암호쳐서 성공

 

이제 중계서버에는 옮겨놨으니 S3로 보냅니다.

여기서 aws cli를 사용하는데 방법은 링크참고 중계서버에 aws cli 세팅을 해주셔야겠죠?

링크 참고 : https://story-sh.tistory.com/entry/230207AWS-Command-Line-InterfaceCLI-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-for-Windows-11

 

[230207]AWS Command Line Interface(CLI) 설치 및 설정하기 - for Windows 11

{본문의 작성 기준} 제목 : [케이스일자] 케이스이름 및 제목(약어) - for ~ 내용 : [작성의 이유 및 참고사항] [공식 및 참고 사이트] [방법 및 설명 가이드] [한줄평] [작성의 이유 및 참고사항] - 작

story-sh.tistory.com

중계서버에 카피된 파일을 이제 S3로 옮깁시다.

아래의 두가지 방법을 번갈아 가며 사용함.

aws s3 sync 

aws s3 cp 

## cmd에서 
aws s3 cp d:/repo s3://bucket-name --recursive
aws s3 sync d:/repo s3://bucket-name


## 기본 예시 
aws s3 cp SOURCE DEST [--recursive]
aws s3 rsync SOURCE DEST

 

※참고로 S3 와 원본과 차이가 생기는 것 하나는 원본에서 폴더 안에 파일이 없다면 즉 빈폴더는 업로드가 안된다는 거......

 

 

참고 URL : 

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-services-s3-commands.html

 

AWS CLI에서 상위 수준(s3) 명령 사용 - AWS Command Line Interface

PowerShell을 사용하는 경우 셸은 CRLF의 인코딩을 변경하거나, 파이프 입력이나 출력 또는 리디렉션된 출력에 CRLF를 추가할 수 있습니다.

docs.aws.amazon.com

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/sync.html

 

sync — AWS CLI 2.11.11 Command Reference

metadata-directive - Copies the following properties from the source S3 object: content-type, content-language, content-encoding, content-disposition, cache-control, --expires, and metadata

awscli.amazonaws.com

 

※ 참고로 이거 중요할 수 있는데 ㅎㅎ 마지막 과정인 AWS상의 중계서버 즉 EC2와 S3 업로드 시 EC2 사양을 목적에 맞게 변경하면 빨라져요~ 네트워크 속도!!   필자는 c6i.2xlarge > r5dn.xlarge 로 오히려 비용이 낮아지고 네트워크 속도는 업!!!

지금 중요한 건 전송속도를 최고로 기존 10G -> 20G로 S3 sync 시 20Gbps -> 40Gbps 로 빨라지는 것을 확인할 수 있습니다.~

 

아래의 그림처럼 비용과 네트워크 퍼포먼스 보시면 딱

역시 직접 해봐야 하네요...

728x90
반응형
Comments