Bash, wput i tworzenie katalogu

Potrzebujesz pomocy z C, C++, perl, python, itp.
draggero
Posty: 27
Rejestracja: 20 listopada 2009, 21:45

Bash, wput i tworzenie katalogu

Post autor: draggero »

Witam.

Mam pewien skrypt, który ma służyć do przesyłania plików przez FTP. Ale aby to normalnie wyglądało wypadałoby zrobić jakieś katalogi.
Do tego używam polecenia find, które usuwa pliki starsze niż jeden dzień. Jak to przerobić, aby usuwane były pliki starsze niż utworzone przed godziną?

Kod: Zaznacz cały

wput ftp://xxx:xxx@xxx.pl/dema/"$DATE"/ yyy/*.dem -nd
find . -name '*.dem' -ctime 1 -delete

I teraz jest problem, bo nie tworzy mi katalogów nazwanych zmienną $DATE. Jeśli wpiszę tam coś innego to działa.
W czym jest problem?



PS. Jednak coś jeszcze będzie trzeba chyba zmienić. Bo wrzuca plik który cały czas jest nadpisywany i go przerzuca i tak w kółko. Więc chyba będzie trzeba wprowadzić jakąś zmienną która będzie przetrzymywać pliki, które należy przesłać, czyli pliki starsze niż 30 minut.
tunio
Posty: 1
Rejestracja: 12 stycznia 2012, 20:45

Post autor: tunio »

Co do usuwania pliku starszego niż godzina, to wszystko jest napisane w podręczniku systemowym:

Kod: Zaznacz cały

man find

Kod: Zaznacz cały

 find . -name '*.dem' [B]-cmin 60[/B] -delete
Co do ostatniego zdania to nie wiem o co ci chodzi.
draggero
Posty: 27
Rejestracja: 20 listopada 2009, 21:45

Post autor: draggero »

Chodzi o to, że skrypt ma przerzucać dema, które są na bieżąco ładowane z serwera CS. I jak wybiorę wput i nie ominę pliku, który jest właśnie zapisywany to wput jakby się zapętla i przesyła go do momentu, aż on się nadpisze. Przy okazji, w ciągu minuty tracąc 300MB transferu, niby niedużo ale jeśli zapętliłoby się i z następnym to właściwie cały czas przesyłałby te dane i szybko bym 0,5TB transferu stracił.

Dlatego przyda się program find, który omija pliki z ostatnich 60 minut (nowe demo tworzone jest mniej więcej co 25 minut).
Tylko teraz zapewne muszę jakoś te pliki wysłać i pewnie muszę wrzucić w skrypt jakąś pętlę.
Bo teraz mam powiedzmy listę plików:
  1. 1.dem
  2. 2.dem
  3. itd. którą pobiera find.

Tylko jak teraz te pliki dopasować do tego polecenia?

Kod: Zaznacz cały

wput ftp://xxx:xxx@xxx.pl/dema/"$DATE"/ yyy/*.dem -nd
Bo nie bardzo orientuję się jak je przypisywać.

I dziękuję za jakikolwiek odzew w tej sprawie.


Edycja:
Coś tam kombinuję ale jest problem z tym programem find. On jakby wyszukuje jak wybiorę:

Kod: Zaznacz cały

 -cmin 1
to szuka 0-1 i znajdzie tylko pliki edytowane w ciągu minuty, a całej reszty nie. Czy coś można na to poradzić?
witas
Posty: 2
Rejestracja: 13 stycznia 2012, 14:06

Post autor: witas »

Ekspertem nie jestem ale może spróbuj:

Kod: Zaznacz cały

-cmin +1
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Wystarczy dokładnie przeczytać dokumentacje find.
Poniższa linijka wyszuka wszystkie pliki *.dem znajdujące się w katalogu w którym został uruchomiony skrypt (nie zagłębiając się dalej), których status zmienił się później niż 60 min, a następnie uruchomi program wput podstawiając za "{}" wyszukaną nazwę pliku.

Kod: Zaznacz cały

find . -maxdepth 1 -name '*.dem' -cmin +60 -exec wput ftp://xxx:xxx@xxx.pl/dema/"$DATE"/ yyy/{} -nd \;
ODPOWIEDZ