Programming/TclTk

Tcl 특정 경로, 파일을 제외하고 다운로드

Hunveloper 2023. 4. 27. 21:43
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