Strona 1 z 1

Bash, wput i tworzenie katalogu

: 09 stycznia 2012, 18:58
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.

: 12 stycznia 2012, 20:52
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.

: 13 stycznia 2012, 00:35
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ć?

: 13 stycznia 2012, 22:34
autor: witas
Ekspertem nie jestem ale może spróbuj:

Kod: Zaznacz cały

-cmin +1

: 13 stycznia 2012, 23:17
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 \;