2017-02-06 7 views
0

:다음 <code>bash</code> 백업 스크립트에서

만든 백업 디렉토리 : ~/문서/백업/ ~/문서 이것은 출력이

PROJECT="testPrj" 
BACKUP_DIR="~/Documents/backups/" 
BACKUP_FILES="./*.sh ./*.h ./*.hpp ./*.c ./*.cc ./*.cpp ./*.md ./*.txt ./BUILD" 
BACKUP_TIME=_`date +%Y%m%d_%H%M` 
BACKUP_FILENAME=$BACKUP_DIR$PROJECT$BACKUP_TIME.tar.bz2 

mkdir -p $BACKUP_DIR 
echo "Created backup directory:" $BACKUP_DIR 

echo $BACKUP_FILENAME 

tar -cpjf $BACKUP_FILENAME $BACKUP_FILES 

/backups/testPrj_20170206_1609.tar.bz2

압축 파일의 경로가 잘못되었습니다. 대신 존재의 : \~/Documents/backups/

이 대상 디렉토리 효과적으로 존재, 그리고 로컬 경로에 있습니다 ~/Documents/backups/

이 간다.

mkdir을 명령 줄에서 실행하면 올바른 위치에 디렉토리가 만들어집니다.

+2

'~'은 따옴표 안에있을 때 홈 디렉토리로 확장되지 않습니다. 'BACKUP_DIR = ~/"Documents/backups /"'를 사용하십시오. 또한 변수 이름에 소문자를 사용하는 것이 가장 안전하므로 셸이나 다른 프로그램에 특별한 의미를 갖는 변수 이름을 우연히 사용하지 않도록하십시오 (고전적인 예는'$ PATH '를 사용하는 것입니다). –

+0

맞습니다. 이 설명을 대답으로 옮기면 받아 들일 것입니다. – Pietro

+0

'BACKUP_DIR = "$ HOME/Documents/backups /"를 사용하면 효과적입니다. –

답변

1

~은 따옴표 안에있을 때 홈 디렉토리로 확장되지 않습니다. 다음과 같이 맡겨 (다음 /) 인용되지 않은 : 또한

BACKUP_DIR=~/"Documents/backups/" 

을, 당신이 실수로 쉘에 특별한 의미가있는 변수 이름을 사용하지 않도록 변수 이름을 소문자 또는 혼합 케이스를 사용하는 것이 가장 안전합니다 또는 다른 프로그램 (예 : $PATH 사용)입니다.