OK, wyjaśnię trochę więcej na temat mojego środowiska i tego, czego szukam:
Mam środowisko, w którym jest tyle plików dziennika, że te pliki dziennika są obracane w zależności od ich wagi, więc nie wszystkie pliki dziennika są obracane, mam też wiele różnych ścieżek, w których znajdują się te pliki dziennika, a te pliki dziennika są nazwany jak wzór.
To jest przykład pliku zawierającego ścieżki, nazwy, czasy ZIP i DEL:
# all entries in this file are logfile directories.
# Report: NO # Specify if you want to receive result by mail, options (YES/NO)
# These files will be zipped after <ZIP> days and deleted after <DEL> days
# If <DEL> is not specified, no files will be deleted
# Format: <DIR> <FILEPATTERN> <ageInDaysBeforeBZIP> [<ageInDaysBeforeDELETE>]
# Example: /home/loguser/logstorage "PATTERN" <ZIP> <DEL>
#
/home/user1/www/logs/ "example.log*" 3 30
W takim przypadku skrypt odczyta i pobierze ścieżki do zmiennej $directory
, zastosuje wzorzec do zmiennej, $pattern
a ZIP i DEL zostaną użyte dla plików dziennika zip starszych niż 3 dni i usuwają stare pliki dziennika starszych niż 30 dni, ale jest to kolejny część skryptu.
Muszę więc co godzinę przesyłać bieżące pliki dziennika na serwer docelowy, ale nie mogę z nich korzystać --delete
, ponieważ na serwerze docelowym muszę przechowywać pliki dziennika przez 90 dni.
Stworzyłem więc ten skrypt, który działa co godzinę i przesyła pasujące pliki sygnatur na serwer docelowy.
Na obu serwerach jest kolejna robota koleżeńska, która „utrzymuje porządek w pokoju”, uruchamiając raz dziennie i kompresując pliki dziennika starsze niż 1 dzień i usuwając te, które są starsze niż 90 dni, ale nie może wykonać swojej pracy, ponieważ jeśli spróbuje to gzip -9 example.log.2014-01-17--12
zrobić ” Aby to zrobić, plik istnieje, ponieważ został skompresowany w źródle i przesłany do docelowego pliku zip.
Zdaję sobie sprawę, że jeśli dodam lub zmodyfikuję, --exclude "*.gz"
zamiast --exclude "*"
spakowanych plików, nie zostaną one przeniesione, w każdym razie zostaną spakowane w miejscu docelowym i problem rozwiązany, myślę, ale muszę się upewnić, że są takie same pliki z tym samym md5sum, ponieważ jest tyle ważnych plików dziennika.
Woow, mam nadzieję, że rozumiesz i jestem bardzo wdzięczny za twój czas i współpracę, mam nadzieję, że pomoże to więcej sysadminowi z tym samym problemem lub podobnym.
Jeśli potrzebujesz więcej wyjaśnień, daj mi znać.
--include
/--exclude
: pobrać wszystkie podfoldery*/
, tylko ze wzorem$pattern
, ale potem wszystko wykluczyć*
? Czy zinterpretowałem zamiar, a jeśli tak, to nie brzmi dobrze. Czy nie byłoby, aby wszystkie podfoldery*/
, tylko ze wzoru$pattern
, ale potem zdejmować pliki.gz
, które byłyby:--exclude "*.gz"
. Bez def za$subdir
,$basefilename
i np Path - prawie kompletny przykład, to co mogę myśleć poza czubek głowy.