2017-09-18 15 views
0

아주 작은 경험으로 logrotate를 사용하려고 시도하고 있습니다. 현재 파일을 회전하고, 압축하고, 같은 폴더로 이름을 바꿉니다. 이제는 같은 위치에 파일을 저장하는 대신 다른 위치에 파일을 저장해야합니다. 또한 동일한 폴더 구조가 있어야하며 새 폴더를 만드는 것보다 폴더 구조가없는 경우 필요합니다. 모든 압축 파일을 추가해야하며 기존 파일을 덮어 쓰지 않아야합니다.동일한 폴더 구조의 백업 위치에 여러 하위 디렉토리의 파일을 로테이트하십시오.

olddir이 대상 폴더에 파일을 저장하지만 해당 폴더에 파일을 놓거나 만들지는 모릅니다. 그곳에 아직 없다.

예제 소스

VAR/로그인/디바이스 1/*.

VAR/로그인/디바이스 2/*.

VAR 로그/로그인/장치 3/*.

예 로그 로그 대상은 오

옵트/보관/장치 1/

로 된 .gz 파일을 드롭하기 PT/archvie/복합기 2/

이 (옵트/보관/장치 3을 작성하고 여기에 회전 된 파일을 넣을 필요)

답변

0

logrotate에로 이동하는 방법을 찾는 결국 그러나 작업을 수행하는 스크립트를 내놓았다하지 않았나요 같은 종류의 것. 매우 단순하고 1 단계 이상의 하위 폴더에서 작동하지 않습니다.

#!/bin/bash 

source="/opt/log/host" 
destination="/opt/archive/" 

for i in $(find $source -maxdepth 2 -type f -name "*.gz") 
do 

#removing /opt/log/host from string 
dd="$(echo "$i" | sed -e 's#^/opt/log/host/##')" 

#removing everything after the first/
ff=$(echo "$dd" | cut -f1 -d"/") 

#setting the correct destination string 
ee=$destination$dd 

#create new folders if they do not exist 
mkdir -p -- "$destination$ff" 

#move files 
mv $i $ee 

done