2011-01-21 2 views
0

설정 한 폴더에서 연속 백업을하기 위해 아래에 표시된 bash 스크립트를 조합했습니다.Bash 스크립트 : Tar가 제대로 작동하지 않음

그러나 find 호출은 백업에 /home/myfoldertobackup/을 포함 할뿐만 아니라 tar 파일명을 확인하는 것처럼 보입니다. 왜 지구상에 이런 일이 일어 났으며, 앞서 언급 한 폴더 만 타르에 넣었는지 확인하기 위해 무엇을 할 수 있습니까? find이 찾은 파일의 이름을 {}을 대체하기 때문이다

if [ -e $filename ]; 
then 
    # Tar exist. Check if tar is older than five days and if so, update it. 
    find $filename -mtime +5 -exec tar -czvf $filename /home/myfoldertobackup/ {} \; 
else 
    #Tar doesn't exist. Force creation of tar! 
    tar -czvPf $filename /home/myfoldertobackup/ 
fi 
+3

백업 전략을 사용하면 어떤 이유에서든 새 백업이 실패한 경우 y 우리의 이전 백업이 파괴되었습니다 - 그래서 당신은 이전보다 더 나 빠졌습니다. 새 백업이 완료 될 때까지 이전 백업을 파괴하지 마십시오. –

+0

안녕하세요, Jonathan. 절대적으로 좋은 점! 임시 위치에 타르를 만들고이를 백업 대상 위치로 이동하는 것이 더 적절하다고 말합니까? – Industrial

답변

3

"$ 파일 이름이"최종 수정 시간이 5 일 이전 인 경우, 실행을 다음 명령을 찾을 수 쓰기) $ filename; 당신이 $ 파일 이름을 원하지 않는 경우 단지 쓰기

find $filename -mtime +5 -exec tar -cvz /home/myfoldertobackups -f {} \; 

이상 (더 읽기 때문에)

if [ -n "$(find $filename -mtime +5)" ]; then 
    tar -cvzf "$filename" /home/myfoldertobackups; 
fi 

UPDATE 다음

코드 내 제안 된 변화입니다 :

if [ -e $filename ]; 
then 
    # Tar exist. Check if tar is older than five days and if so, update it. 
    # find $filename -mtime +5 -exec tar -czvf $filename /home/myfoldertobackup/ {} \; 
    if [ -n "$(find $filename -mtime +5)" ]; then 
     tar -cvzf "$filename" /home/myfoldertobackups; 
    fi 
else 
    #Tar doesn't exist. Force creation of tar! 
    tar -czvPf $filename /home/myfoldertobackup/ 
fi 
+0

안녕하세요 Marco! 이 점에 큰 감사드립니다. 약간 지연 될 수도 있지만 솔루션은 파일이 존재하지 않을 수도 있다는 사실을 고려합니까? – Industrial

+0

아니요, 아무 문제가 없습니다. 내 솔루션은 find 명령 만 대체합니다. 어쨌든, 전체 코드로 내 대답을 업데이 트하겠습니다 :) – marco

+0

안녕하세요 마르코. 도와 주셔서 정말로 고맙습니다! – Industrial

2

. 그냥 {}으로 떨어지면 끝났습니다./타르가 진행되기 때문에 아마 잘립니다 집/myfoldertobackup $ 파일 이름을 (두고

tar -cvfz $filename /home/myfoldertobackups/ $filename 

: