morg Napisano Wrzesień 15, 2009 Zgłoszenie Share Napisano Wrzesień 15, 2009 Witam Nie mogę nigdzie znaleść jak obciąć ostatni człon katalogu $PWD | cut -d'\/' -f1 lub f2 odnoszą się do pierwszego członu. np: /dluga/sciezka/do/katalogu po operacji powinna wygladac: /dluga/sciezka/do. I drugie pytanie: Mam serwer backupowy z którego chce przerzucić część plików na drugi serwer. Problem w tym, że na starym serwerze powinny zawsze znajdować się pliki z ostatnich 14 dni. Skrypt będzie wykonywany 1 - 2 razy w miesiącu. W jaki sposób przygotować listę plików, która nie będzie zawierała plików z ostatnich 2 tygodni. Do kasowania używam takiej funkcji która działa na serwerze z mała ilością RAM, stąd konieczność wrzucenia wszystkiego do pliku i przeszukiwania go. find /oradata/bank/ |grep -v CMemi10a |grep -v _dmp >ls-la stare=`cat ls-la |grep "\/old\/"` for plik in $stare; do rm -f $plik done Do wysłania na serwer posłużę się ftp, który będzie zaczytywał pliki do wysłania z wcześniej przygotowanego pliku, a w następny przebieg skasuje zarchiwizowane pliki. Czy taki sposób jest sensowny? Nie wiem jak dodać warunek który prerwie działanie skryptu w momencie gdy pojawi sie spacja w nazwie katalogu i zakończy działanie albo się zawiesi. Dziekuję za pomoc. M. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Wrzesień 16, 2009 Zgłoszenie Share Napisano Wrzesień 16, 2009 @1 dopasuj sobie: #!/bin/sh echo $PWD echo ${PWD##*/} echo ${PWD#/} echo ${PWD%%/*} echo ${PWD%/*} #blabla - obetnij z początku pierwszy pasujący "blabla" parametru ##blabla - obetnij z początku najdłuższy pasujący do "blabla" % i %% - podobnie, tylko że z końca parametru obcina a dopasowanie jak zwykle * ? itp. [EDIT] heh, nie wiem co Ty kombinujesz, ale ta końcówka zapisu jest co najmniej dziwna |grep -v _dmp >ls-la stare=`cat ls-la |grep "\/old\/"` for plik in $stare; do rm -f $plik done może tak: |grep -v _dmp |grep "\/old\/" | xargs -i rm -f '{}' możliwe, że coś z xargs źle zapisałem, bo często się na tym mylę ale xargs właśnie do tego służy. Zresztą przy tak nie bezpiecznej operacji jak usuwanie zawsze możesz końcówkę zapisać jako echo: | xargs -i echo rm -f '{}' i dopiero jak na ekranie jest coś sensownego to dopisać | xargs -i echo rm -f '{}' | sh co do czasu 14 dni to "find is a beautiful tool" jeśli zaś chodzi o spacje w katalogu do kilka nawiasów i cudzysłowów właściwie użytych zawsze się sprawdza. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Wrzesień 17, 2009 Autor Zgłoszenie Share Napisano Wrzesień 17, 2009 Dziękuję. Poprzeglądam jeszcze finda. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
hello_world Napisano Wrzesień 17, 2009 Zgłoszenie Share Napisano Wrzesień 17, 2009 nie neguję nauki basha ale po co taka rzeźba. rsync naprawdę potrafi wiele, rowniez jeśli chodzi o czas modyfikacji plików. Napweno jest wydajniejszy niż ten skrypt przez ftp W sumie to ten ftp wcale nie musi być twoj.(sorki dopiero teraz zajarzyłem ) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morg Napisano Grudzień 23, 2009 Autor Zgłoszenie Share Napisano Grudzień 23, 2009 co do czasu 14 dni to "find is a beautiful tool" Skasowanie wszystkich plików starszych niż 15 dni (21600=60*24*15) find /mnt/backup/backup* -cmin +21600 -exec rm -r {} \; Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się