Linux 도구는 너무 오래된 백업을 삭제할 수 있습니까?

Linux 도구는 너무 오래된 백업을 삭제할 수 있습니까?

저는 오늘 SQL Server 2000을 작업하고 있었는데토론EXECUTE명령을 사용하려면 -DelBkUps특정 기간의 백업을 삭제해야 합니다.

Linux에서 오래된 백업을 삭제하는 도구가 있습니까? 제 생각에는 일종의 크론 작업에서 실행되는 것일 수도 있고 Backula와 같은 더 큰 도구 세트의 일부일 수도 있습니다.

나는 bash가 이런 일을 할 수 있다고 확신하지만, 나는 좀 더 사전 구축되고 널리 사용 가능한 것을 찾고 있습니다.

답변1

rsnapshotrsync12개월 백업과 같은 백업 횟수(개수)를 유지하고 오래된 백업을 자동으로 삭제하도록 구성할 수 있는 파일 백업을 생성하기 위한 Perl 스크립트입니다 .

기간은 시간, 일, 주, 월 단위로 설정할 수 있으며, 예상한 대로 에 의해 자동으로 호출됩니다 cron.

나는 이를 사용하여 데이터베이스 덤프(mysql)의 일일 스냅샷을 생성합니다 Drupal CMS.rsnapshot.org

답변2

아마도 이와 같은 간단한 쉘 스크립트를 찾고 있을 것이므로 "미리 구축된" 프로그램이 드물다는 것은 놀라운 일이 아닙니다.

이 스크립트의 작동 방식은 백업 구성 방법에 따라 다릅니다. 백업 tar-ball의 파일 생성 타임스탬프를 신뢰할 수 있다고 확신하는 경우 간단히 find를 사용할 수 있습니다.

find /backup-dir -type f -ctime +366 -exec echo rm -f {} +

1년보다 오래된 모든 파일을 찾아서 삭제하라는 명령을 인쇄합니다. (출력을 복사/붙여넣거나 필요 없이 위를 다시 실행할 수 있습니다 echo)

그러나 파일 타임스탬프는 100% 신뢰할 수 없을 수도 있습니다. 그래서 4자리 연도와 3자리 "율리우스력" 날짜(연도의 n번째 날)로 표시된 폴더에 백업을 넣었습니다. 다음 명령을 사용하여 디렉터리를 생성했습니다.

date +%Y%j

그런 다음 작년의 "대상" 타임스탬프를 생성하고 해당 문자열을 사전순으로 더 작은 모든 값과 비교합니다.

DAY=$(date +%j)
YEAR=$[ $(date +%Y) - 1 ]
find /backup-dir -type d | 
  awk '/[0-9]{7}/'
  awk -F/ -v target=$YEAR$DAY '$3 < target' |
  xargs echo rm -rf 

글쎄요, 아닐 수도 있어요그래서하찮은. 이번에는 find백업 디렉터리의 디렉터리 이름을 출력합니다. 첫 번째는 awk두 번째로 접힐 수 있습니다. 명확성을 위해 분리했습니다. 두 번째 awk는 디렉터리 구분 기호를 따라 각 줄을 분할하고 세 번째 디렉터리 구성 요소(첫 번째 디렉터리 구성 요소가 비어 있음)가 대상 날짜보다 작은 경우에만 해당 줄을 출력 합니다 YYYYjjj. 마지막 으로 /이전과 동일한 의사 삭제 명령이 있지만 .xargsfind ... -exec ... +

관련 정보