TAR: bash 스크립트의 여러 디렉터리

TAR: bash 스크립트의 여러 디렉터리

5개의 다른 디렉토리에 있는 7일 미만의 TAR 파일을 시도하고 있습니다.

find 명령을 사용하면 이 명령을 사용한 후 TAR이 필요한 파일을 찾을 수 있습니다.

find /opt/splunk/var/lib/splunk/firewall/db/ -type f -mtime -7
find /opt/splunk/var/lib/splunk/cb/db/ -type f -mtime -7
find /opt/splunk/etc -type f -mtime -7
find /opt/splunk/var/lib/splunk/cb/db/ -type f -mtime -7
find /opt/splunk/var/lib/wineventlog/db -type f -mtime -7

이 5개 디렉터리에서 백업해야 하는 여러 파일을 찾을 수 있습니다.

find 명령을 사용하여 찾은 파일을 TAR하고 7일이 지난 파일만 가져오도록 하려면 어떻게 해야 합니까? 이 작업이 완료되면 하나의 큰 파일로 패키징하고 원격 서버에 동기화하고 싶습니다.

이것은 현재 주간 cron에서 실행하는 스크립트이지만 이 디렉토리에 7일 된 파일만 필요하기 때문에 약간 과합니다.

#!/bin/bash
name=$(date '+%y-%m-%d')
tar -zcf /opt/splunk/var/backups/splunkbackup$(date '+%y-%m-%d').tar.gz 
/opt/splunk/etc /opt/splunk/var/lib/splunk/firewall 
/opt/splunk/var/lib/splunk/ossec /opt/splunk/var/lib/wineventlog 
/opt/splunk/var/lib/cb
rsync -avz --remove-source-files /opt/splunk/var/backups/splunkbackup* 
svc_splkbup@HOST:/var/log/splunk/backups/indexer

답변1

man tar목적 에 따라 -T또는-N

-티

 find ... | tar czf XXX.tgz -T -

어디

  • ...그것은 당신의 find선택 입니다
  • XXX.tgz당신의 tar 파일
  • -T- tar에게 stdin에서 벗겨낼 파일을 읽도록 지시합니다.

-N

-N, 또한 사용할 수 있습니다. 먼저 7일 전( 또는 ) --newer파일이나 날짜를 생성해야 합니다.touch -7 daysdate -7 days

 tar -czf XXX.tgz -N ref /opt/splunk/{etc,var/lib,var/lib/w}

어디

  • ref귀하의 참조 문서 또는 날짜는 무엇입니까?
  • /opt/splunk/{etc,var/lib,var/lib/w}으로 확장될 예정입니다./opt/splunk/etc /opt/splunk/var/lib /opt/splunk/var/lib/w
  • 없다는 점 참고해주세요find

답변2

올바른 tar 구현을 사용하는 경우 이는 간단합니다.

star -c -f out.tar -find /opt/splunk/etc -type f -mtime -7

물론 -find매개변수 뒤에 더 많은 디렉터리 이름을 추가할 수 있습니다.

findstat(2)내부 완료 호출은 libfind코드에서 사용되며 star두 번째로 수행할 필요가 없기 때문에 별도의 프로세스에서 사용하는 것보다 훨씬 빠릅니다 .

관련 정보