5 시간마다 새로운 / 업데이트 된 파일을 tar하도록 crontab을 업데이트하십시오.
crontab이 모든 새 / 업데이트 된 파일을 tar하는 명령을 만들려고합니다 (cron이 마지막으로 실행되었을 때부터). 크론은 5 시간마다 실행해야합니다.
/home/swayraines
하위 폴더를 포함 하여 폴더에 포함 된 모든 파일을 백업하고 싶습니다.- 여기에 해당 파일과 함께 tar를 저장하고 싶습니다.
folder/backup/back.tar
- crontab은 5 시간 마다 실행되어야합니다.
- 크론이 마지막 으로 실행 된 이후 추가되거나 편집 된 파일 만 아카이브에 추가해야합니다. 따라서 새롭거나 편집되지 않은 경우 저장해서는 안됩니다.
- 여기에 stdout과 stderr이 모두있는 로그에 결과를 저장하고 싶습니다.
folder/backup/backlog.log
그래서 진행하는 가장 좋은 방법 find
은 지난 5 시간 동안 추가 / 편집 한 tar
파일과 stdout 및 stderr을 .log로 출력하기 전에 해당 파일 을 처리 하는 것이라고 생각했지만 작동하지 않고 무엇이 잘못되었는지 잘 모르겠습니다.
지금까지의 모습입니다 (부분 답변을 포함하도록 업데이트 됨).
0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
업데이트 문제는 crontab이 실행될 때마다 새 tar 아카이브를 생성하고 아카이브에는 추가 된 최신 파일 만 포함되어 있다는 것입니다.
update 2 간단히 말해서 처음에는 5 시간마다 새 아카이브를 만들고 싶지만 아카이브를 업데이트하고 새 파일 만 추가하고 싶다고 처음에 언급했습니다. 그래서 tar 명령을 다음과 같이 변경해야한다고 생각합니다 -uvf
.
답변
인수에 부호있는 숫자를 사용하십시오 . 300은 정확히 300 분 전에 수정되었음을 의미 합니다. -300은 덜 3백분 전에 비해. 300는 것 보다 300 분 전.
업데이트 1
인수 -exec
는 다음과 \;
같이로 끝나야합니다 .
0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
이것은 문제없이 실행되지만 한 번에 하나의 파일에 대해 명령을 실행하기 때문에 마지막으로 작동하는 파일 만 tar 파일 로 압축 됩니다. 파일을 임시 디렉터리에 복사하고 임시 디렉터리를 압축 한 다음 임시 디렉터리를 제거하는 명령을 작성하는 것이 좋습니다.
업데이트 2
옳은. 당신은 사용할 수 있습니다 -r --append
또는 -u --update
당신이의 마지막에 변경된 파일을 추가하려면 타르 파일, 그러나 타르 파일을 먼저 생성해야합니다. 파일이 없으면 생성되지 않습니다. 이러한 명령은 이전 버전을 덮어 쓰지 않으므로 두 버전이 모두 필요하지 않은 경우 --delete
먼저 사용한 다음 새 버전을 추가 해야합니다 .
또한 이것은 압축 된 tar 파일 이 아닙니다 . 압축 해제 / 재 압축 없이는 압축 된 tar 파일을 업데이트 할 수 없습니다 . 그렇기 때문에 -z
및 -ur
옵션을 결합 할 수 없습니다 .