클래스의 경우 학교가 호스트하는 원격 서버에서 작업해야합니다. 지금까지 나는 서버에 많은 파일을 만들었고, 노트북에 파일을 전송하려는 경우 또는 실수로 디렉토리를 삭제하거나 어리석은 오류가 발생하는 경우를 대비하여 백업하고 싶습니다. 내가 튜토리얼과 파일을 백업하는 스크립트를 발견하고 어떤 디렉토리 (그것은 주요 사용자의 것입니다) 및 문서에 CD를 결정할 수 있도록 그것을 수정하기로 결정했습니다. 디렉토리가 존재하지 않으면 백업을 만듭니다. 나는 아직도 이런 종류의 스크립팅에 익숙하지 않으며 추가적인 조언이나 게시물 링크는 크게 감사 할 것입니다.스크립트가 파일/디렉토리를 인식하지 못합니다.
코드 :
#!/bin/bash
#######################################################
## Simple backup script..
## Created by Matthew Brunt: ([email protected])
## Licensed under GNU GPL v3 or later, at your option.
## http://www.gnu.org/licenses/gpl.html
##
## Further edited by Michael Garrison to backup the
## directory it is located in and print the contents.
#######################################################
mkdir -p Backup
#Defines our output file
OUTPUT= $(cd Backup && pwd)/backup_$(date +%Y%m%d).tar.gz
#Defines our directory to backup
BUDIR=$(cd Desktop && pwd)
#Display message about starting the backup
echo "Starting backup of directory $BUDIR to file $OUTPUT"
#Start the backup
tar -cZf $OUTPUT $BUDIR
#Checking the status of the last process:
if [ $? == 0 ]; then
#Display confirmation message
echo "The file:"
echo $OUTPUT
echo "was created as a backup for:"
echo $BUDIR
echo ""
echo "Items that were backed up include:"
for i in $BUDIR; do
echo $i
done
echo ""
else
#Display error message message
echo "There was a problem creating:"
echo $OUTPUT
echo "as a backup for:"
echo $BUDIR
fi
나는 원래 스크립트가 작동하는지 알고 난 $OUTPUT
변수를 변경할 때까지 일했다.
./backup.sh
./backup.sh: line 15: /Users/mgarrison93/Backup/backup_20121004.tar.gz: No such file
or directory
Starting backup of directory /Users/mgarrison93/Desktop to file
tar: no files or directories specified
There was a problem creating:
as a backup for:
/Users/mgarrison93/Desktop
나는 그것이 파일 이름을 수락하지 않는 것을 볼 수 있습니다,하지만 난이 문제를 해결하는 방법을 모른다 : 저는 현재 다음과 같은 결과를 얻을.
방금 원래 시도했던 /Backups/file-name.tar.gz
으로 $OUTPUT
을 변경해 보았습니다. 정상적으로 작동합니다. 문제는 $(cd Backup && pwd)/backup_$(date +%Y%m%d).tar.gz
인 것 같습니다. 무엇이 잘못되었는지 확실하지 않습니다.
<variable>=<value>
, 첫째, 당신은 (현재 스크립트에) 영구적 값에 변수를 설정하기위한 구문이 다음 실행 구문이 :
'OUTPUT ='다음에 공백을 제거해보십시오. (그것이 수정 된 이유를 설명하는 답변을 게시 할 것입니다) –
이제 완벽하게 작동합니다! –