폴더를 자동으로 TAR링하고 백업하기 위해 더 이상 의미를 설명할 수 없는 사람이 만든 bash 스크립트가 있습니다. 현재 나는 마지막 줄에 대해 혼란스러워합니다.
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
전체 스크립트는 다음과 같습니다.
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME=$(date +"%m-%d-%Y-%T")
FILENAME=pokebrawl-$TIME.tar.gz
SRCDIR=/home/servers/brawl/world
DESDIR=/home/_backups/pokebrawl
tar -cpzf $DESDIR/$FILENAME $SRCDIR
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
#END
답변1
이 명령은 7일 이상(더 정확하게는 지난 주) 동안 수정되지 않은 find
디렉터리 안이나 아래의 모든 일반 파일을 삭제합니다 ./home/_backups/pokebrawl
그래야 한다아마도읽다
find "$DESDIR" -mtime +6 -type f -delete
또는
find "${DESDIR:?Not set correctly}" -mtime +6 -type f -delete
해당 디렉토리 이름을 보유하는 아주 좋은 변수가 이미 있기 때문입니다. 두 번째 변형은 어떤 이유로 비어 있거나 설정되지 않은 경우 DESDIR
오류를 발생시킵니다 .
나는 이것이 지난 주의 백업만 유지하는 방법이라고 가정하고 있습니다. 더 많은 공간을 사용하지 않고도 더 오랜 기간 동안 백업을 보관할 수 있는 borgbackup
또는 같은 것을 사용하는 것이 좋습니다 (데이터가 많이 변경되지 않으면 1년 분량의 시간별 백업도 많은 공간을 차지하지 않습니다). restic
데이터 중복을 제거하고 borgbackup
압축도 지원합니다(둘 다 원격 백업 및 암호화 지원).
24시간(자정)마다 스크립트를 실행하려면 크론 작업을 사용하세요.
먼저 명령을 실행하십시오 crontab -e
. 그러면 활성 사용자의 현재 crontab이 포함된 편집기가 열립니다(빈 파일일 수도 있고 아닐 수도 있음).
그런 다음 추가
@daily /path/to/the/script.sh
( path/to/the/script.sh
스크립트의 경로 이름은 어디에 있습니까?)
편집기를 저장하고 종료합니다.
이제 스크립트는 자정이나 밤에도 호출됩니다.
매일 오후 13시 30분에 스크립트를 실행하려면 crontab 항목으로 다음을 추가하세요.
30 13 * * * /path/to/the/script.sh
crontab 일정을 작성하는 방법에 대한 자세한 내용은 man 5 crontab
해당 시스템의 crontab 매뉴얼( )을 참조하세요.
답변2
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
/home/_backups/pokebrawl
그러면 지난 며칠 동안 수정되지 않은 디렉터리의 모든 파일을 찾아서 +6
삭제합니다. 참고: +6
7일에 해당합니다.
man find
이 스위치의 작동 방식을 확인하세요 .
$ man find
...
-mtime n
File's data was last modified n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file modification times.
Redhat 배포판에서는 이 스크립트를 디렉터리에 넣으면 /etc/crondaily
매일 실행됩니다. 예제로 사용할 수 있는 다른 스크립트가 이미 있음을 확인할 수 있습니다.
$ sudo ls -l /etc/cron.daily/
total 12
-rwx------. 1 root root 219 Aug 1 2017 logrotate
-rwxr-xr-x. 1 root root 618 Mar 17 2014 man-db.cron
-rwx------. 1 root root 208 Nov 4 2016 mlocate