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 days
date -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
매개변수 뒤에 더 많은 디렉터리 이름을 추가할 수 있습니다.
find
stat(2)
내부 완료 호출은 libfind
코드에서 사용되며 star
두 번째로 수행할 필요가 없기 때문에 별도의 프로세스에서 사용하는 것보다 훨씬 빠릅니다 .