1
Bash, skrypty powłoki / Odp: 3 skrypty bash prośba o pomoc
« dnia: 2021-02-25, 00:10:49 »
Witam Ponownie
jednak z skryptem archiwizującym będę musiał się zwrócić do państwa z prośbą pomocy.
Tak kwestią porządkową treść zadania to:
sprawdzone działa. Troszke trzeba było się naszukać tej nieszczęsnej składni ale robi robotę człowiek jest dumny z siebie:)
punkt drugi to też bajka
lub prościej w jednej linie
Znów jest radość z sukcesów.
teraz skoczmy na chwilkę do punktu 4
i znów pełen sukces.
no i docieramy do nieszczęsnego punktu
i już wiemy że archiwum istnieje. no ale teraz co tu dalej począć.
niby jest
ale to nie obsługuje kompresji czyli nie działa
a samo archiwum owszem aktualizuje pliki ale które już występują w archiwum. nie usuwa plików których już niema w katalogu źródłowym ani nie dodaje nowych plików
no i jeszcze przydało by się sprawdzić czy coś się nam zmieniło w archiwum aby poinformować użytkownika.
i ten punkt jest tak problematyczny że nie bardzo potrafię wymyśleć koncepcie na rozwiązanie go.
Próbowałem już z folderami tymczasowymi do rozpakowania zawartości i porównywania komendąale ta porównuje tylko nazwy plików w folderach a nie ich parametry modyfikacji czy rozmiaru.
myślałem o sumie md5 ale tu też zabrnąłem w ślepy zakątek. no brak mi pomysłu jak się za to zabrać i z jakich poleceń skorzystać.
czy może państwo macie jakąś sugestie jak ugryźć ten problem. zapewne próbuje wyważyć otwarte już drzwi, ale klamki jakoś nie mogę znaleźć.
Bardzo Dziękuje z góry za każde wskazanie kierunku
jednak z skryptem archiwizującym będę musiał się zwrócić do państwa z prośbą pomocy.
Tak kwestią porządkową treść zadania to:
Cytuj
Zadanie za 2 pkti o ile z punktem pierwszym niema problemu:
Utworzyć skrypt archiwum.sh:
1. Zarchiwizuj wszystkie pliki z drzewa katalogu domowego (/home/nazwa-usera), które zostały
zmodyfikowane w ciągu ostatnich 24 godzin.
2. Plik archiwalny ma być spakowany do tar.gz.
3. Skrypt ma sprawdzać czy jakieś pliki się zmieniły. Jeżeli żadnego nie ma to ma wypisać
komunikat, a jeżeli są to zarchiwizować do pliku.
4. Nazwa pliku archiwalnego ma być zadana przez użytkownika jako parametr skryptu.
Kod: [Zaznacz]
find ~ -type f -mtime -1 -exec tar -cf archiwum.tar {} \+
Kod: [Zaznacz]
{}\+
punkt drugi to też bajka
Kod: [Zaznacz]
gzip archiwum.tar
Kod: [Zaznacz]
find ~ -type f -mtime -1 -exec tar -czf archiwum.tar.gz {} \+
teraz skoczmy na chwilkę do punktu 4
Kod: [Zaznacz]
nazwa="$1"
find ~ -type f -mtime -1 -exec tar -czf "$nazwa".tar.gz {} \+
no i docieramy do nieszczęsnego punktu
Cytuj
3. Skrypt ma sprawdzać czy jakieś pliki się zmieniły. Jeżeli żadnego nie ma to ma wypisaćtu oczywiście prosta komenda
komunikat, a jeżeli są to zarchiwizować do pliku.
Kod: [Zaznacz]
if [ -e "$nazwa.tar.gz" ]; then
niby jest
Kod: [Zaznacz]
tar -uf
Kod: [Zaznacz]
tar -uzf
a samo archiwum owszem aktualizuje pliki ale które już występują w archiwum. nie usuwa plików których już niema w katalogu źródłowym ani nie dodaje nowych plików
no i jeszcze przydało by się sprawdzić czy coś się nam zmieniło w archiwum aby poinformować użytkownika.
i ten punkt jest tak problematyczny że nie bardzo potrafię wymyśleć koncepcie na rozwiązanie go.
Próbowałem już z folderami tymczasowymi do rozpakowania zawartości i porównywania komendą
Kod: [Zaznacz]
diff
myślałem o sumie md5 ale tu też zabrnąłem w ślepy zakątek. no brak mi pomysłu jak się za to zabrać i z jakich poleceń skorzystać.
czy może państwo macie jakąś sugestie jak ugryźć ten problem. zapewne próbuje wyważyć otwarte już drzwi, ale klamki jakoś nie mogę znaleźć.
Bardzo Dziękuje z góry za każde wskazanie kierunku