728x90

Linux Version
set downloadSh [open "download.sh" w] puts $downloadSh "\#!/bin/bash" puts $downloadSh "rsync -a $ORIGIN_PATH/* $DESTINATION_PATH --exclude /EXCEPT_DIR --exclude /except_file.txt --exclude /data" close $downloadSh exec sh [pwd]/download.sh &
코드 설명
# downloadSh에 download.sh라는 파일을 쓰기형태로 open한다 set downloadSh [open "download.sh" w] # download.sh 파일에 내용을 작성한다 puts $downloadSh "\#!/bin/bash" # download.sh 파일에 내용을 작성한다 # rsync는 cp와 다르게 제외할 수 있는 파일을 지정할 수 있다 # 기본형태 : rsync -a FROM TO # -a는 재귀로 돌며 폴더를 지정했을때 하위에 있는 파일들도 복사함, 만약 사용하지 않으면 파일복사 용도로 사용하면됨 # --exclude를 사용하여 제외하고 싶은 폴더 혹은 파일을 지정할 수 있다 puts $downloadSh "rsync -a $ORIGIN_PATH/* $DESTINATION_PATH --exclude /EXCEPT_DIR --exclude /except_file.txt --exclude /data" # 위에서 [open "download.sh" w]한 파일을 생성 close $downloadSh # sh를 이용하여 현위치에 생성된 download.sh를 비동기로 실행 # &는 exec시 사용하는 옵션으로 비동기로 실행 exec sh [pwd]/download.sh &
Windows Version
set exceptTxt [open "except.txt" w] puts $exceptTxt "[pwd]\\EXCEPT_DIR\\" puts $exceptTxt "[pwd]\\except_file.txt" close $exceptTxt set downloadBat [open "download.bat" w] puts $downloadBat "@echo off if not exist $DESTINATION_PATH mkdir $DESTINATION_PATH xcopy $ORIGIN_DIR $DESTINATION_PATH /E /EXCLUDE:[pwd]\\except.txt " close $downloadBat exec cmd.exe /c download.bat
코드 설명
######### 제외할 폴더와 파일 지정 START ######### # exceptTxt에 except.txt라는 파일을 쓰기형태로 open한다 set exceptTxt [open "except.txt" w] # download.sh 파일에 내용을 작성한다 #EXCEPT_DIR이라는 폴더를 제외하기 위함 puts $exceptTxt "$ORIGIN_DIR\\EXCEPT_DIR\\" # download.sh 파일에 내용을 작성한다 # except_file.txt이라는 파일를 제외하기 위함 puts $exceptTxt "$ORIGIN_DIR\\except_file.txt" # 위에서 [open "except.txt" w]한 파일을 생성 # Linux와 다르게 Windows에서는 파일을 이용하여 EXCLUDE할 주소를 지정 close $exceptTxt ######### 제외할 폴더와 파일 지정 END ######### ############### BATCH FILE START ############### # 실행할 Batch 파일을 생성 set downloadBat [open "download.bat" w] # 실행되는 명령어를 반복적으로 출력하지 않기 위해서 사용 puts $downloadBat "@echo off # 만약에 목적지로 설정한 경로가 없으면 mkdir을 이용하여 경로를 생성 if not exist $DESTINATION_PATH mkdir $DESTINATION_PATH # xcopy를 이용하여 ORIGIN_DIR에서 DESTINATION_PATH로 폴더를 복사 # /E는 해당 폴더와 하위 폴더, 파일들을 복사하기 위해서 사용함 # /EXCLUDE를 호출하고 위에서 생성한 파일을 변수로 주어 지정된 경로를 복사하지 않음 xcopy $ORIGIN_DIR $DESTINATION_PATH /E /EXCLUDE:[pwd]\\except.txt" # 위에서 [open "download.bat" w]한 파일을 생성 close $downloadBat # cmd.exe를 이용하여 현위치에 생성된 download.bat를 비동기로 실행 # &는 exec시 사용하는 옵션으로 비동기로 실행 exec cmd.exe /c download.bat & ############### BATCH FILE END ###############
728x90
728x90
'Programming > TclTk' 카테고리의 다른 글
TCL 동적 변수 사용 (0) | 2023.01.19 |
---|---|
Tcl 동적바인딩, 여러 값 출력 (0) | 2022.10.20 |
Tcl namespace eval command (1) | 2022.09.16 |
TK X 이벤트와 Tcl 명령의 연결 (0) | 2022.09.13 |
TK Pack 형상 관리자 (0) | 2022.09.13 |
댓글