Aktualizuj crontab, aby tarował nowe / zaktualizowane pliki co 5 godzin
Próbuję utworzyć polecenie dla crontab, aby tarował wszystkie nowe / zaktualizowane pliki (od ostatniego uruchomienia crona). Cron musi działać co 5 godzin.
- Chcę wykonać kopię zapasową wszystkich plików zawartych w folderze, w
/home/swayraines
tym jego podfolderu - Chcę tutaj zapisać plik tar z tymi plikami
folder/backup/back.tar
- Plik crontab musi być uruchamiany co 5 godzin
- Do archiwum należy dodać tylko te pliki, które zostały dodane lub edytowane od czasu ostatniego uruchomienia crona. Więc jeśli nie jest nowy / edytowany, nie powinien być zapisywany.
- Chcę zapisać wynik w dzienniku z zarówno stdout, jak i stderr tutaj
folder/backup/backlog.log
Pomyślałem więc, że najlepszym sposobem na kontynuację jest find
dodanie / edytowanie plików w ciągu ostatnich 5 godzin, a następnie tar
tych plików, przed wyprowadzeniem stdout i stderr w .log, ale to nie działa i nie jestem pewien, co jest nie tak.
Oto jak to wygląda do tej pory (zaktualizowane, aby uwzględnić częściową odpowiedź):
0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
update Problem polega na tym, że teraz tworzy nowe archiwum tar za każdym razem, gdy crontab jest uruchamiany, a archiwum zawiera tylko ostatnio dodany plik.
aktualizacja 2 Dla jasności, na początku stwierdziłem, że chcę tworzyć nowe archiwum co 5 godzin, ale raczej chcę aktualizować archiwum i dołączać tylko nowe pliki. Więc uważam, że muszę zmienić polecenie tar na -uvf
?
Odpowiedzi
Użyj podpisanych liczb jako argumentu. 300 oznacza zmodyfikowane dokładnie 300 minut temu. -300 to mniej niż 300 minut temu. +300 oznaczałoby więcej niż 300 minut temu.
AKTUALIZACJA 1
Argument, który -exec
ma kończyć się na \;
, na przykład:
0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
Będzie to działać bez problemu, ale ponieważ wykonuje polecenie na 1 pliku na raz, skończysz z tylko ostatnim plikiem, na którym działa, skompresowanym do pliku tar . Proponuję napisać polecenie skopiowania plików do katalogu tymczasowego, skompresować katalog tymczasowy, a następnie usunąć katalog tymczasowy.
AKTUALIZACJA 2
Poprawny. Możesz użyć -r --append
lub, -u --update
jeśli chcesz dołączyć zmienione pliki na koniec pliku tar , ale plik tar będzie musiał zostać utworzony jako pierwszy. Nie utworzy pliku, jeśli nie istnieje. Ważne jest, aby pamiętać, że te polecenia nie zastępują poprzedniej wersji, dlatego jeśli nie potrzebujesz obu wersji, powinieneś --delete
najpierw użyć, a następnie dołączyć nową wersję.
Pamiętaj też, że nie będzie to skompresowany plik tar . Nie można aktualizować skompresowanych plików tar bez rozpakowywania / ponownego kompresowania. Dlatego nie można łączyć opcji -z
i -ur
.