2012-12-12 4 views
1

을 찾을 수 있다면 내 서버에서 다음 bash는 스크립트가 :검사 (bash는 스크립트에서) 명령의 반환 뭔가

today=$(date +"%Y-%m-%d") 
find /backups/www -type f -mtime -1|xargs tar uf /daily/backup-$today.tar 

당신이 마지막 24 시간에서 만든 수정 된 파일의 백업을/만들어 볼 수있다. 그러나 파일이 없으면 손상된 tar 파일이 만들어집니다. 나는 if..fi 문으로 감싸고 싶다. 그래서 id는 빈/손상된 tar 파일을 만들지 않는다.

누군가이 스크립트를 수정하도록 도와 줄 수 있습니까? -exec를 사용

덕분에

답변

0

한 비교적 간단한 트릭이 될 것이다 최소 하나의 파일 (크기가 최소 임).

+0

이 내 문제가 해결되었습니다. 감사 – Kupe3

1
find /backups/www -type f -mtime -1 -exec tar uf /daily/backup-$today.tar {} + 

xargs하는 것이 바람직하다. 파이프 라인이 필요 없으며 추가 작업없이 공백, 개행 문자 및 기타 비정상적인 문자로 파일 이름을 처리합니다. 끝에있는 {}은 파일 이름의 자리 표시 자이며 은 에 인수가 더 많은 경우에 대비하여 -exec 명령의 끝을 표시합니다.

보너스로 파일을 찾지 못하면 명령을 실행하지 않습니다.

+0

설명해 주시겠습니까? – Vijay

+0

find/backups/www -type f -mtime -1 -exec tar uf /daily/backup-$today.tar {}를 실행하면 오류가 발생합니다 : find : option'-exec '에는 인수가 필요합니다 – Kupe3

+0

@ Kupe3 당신은 서면으로 정확히 입력했는지 확인하십시오. 그게 확실히 작동해야합니다 ... –

6

결과가 결과가 비어있는 경우 다음 체크 확인하는 경우 당신은 확인할 수 있습니다 : 당신은 항상에서 찾을 보장하고 그런 식으로

today=$(date +"%Y-%m-%d") 
touch /backups/www/.timestamp 
find /backups/www -type f -mtime -1|xargs tar uf /daily/backup-$today.tar 

:

today=$(date +"%Y-%m-%d") 
    results=`find /backups/www -type f -mtime -1` 


    if [[ 0 == $? ]] ; then 
    if [[ -z $results ]] ; then 
     echo "No files found" 
    else 
     tar uf /daily/backup-$today.tar $results 
    fi 
    else 
    echo "Search failed" 
    fi 
0

xargs -r 입력이 없으면 아무 작업도 수행하지 않습니다.

관련 문제