bash - szukanie, pakowanie i wysylanie na serwer plików

Potrzebujesz pomocy z C, C++, perl, python, itp.
wenu
Posty: 57
Rejestracja: 04 grudnia 2009, 15:15

bash - szukanie, pakowanie i wysylanie na serwer plików

Post autor: wenu »

Witam.
Staram się napisać skrypt, który wyszuka w katalogu wszystkie pliki *srs, następnie spakuje każdy plik osobno zipem z oryginalną nazwą pliku, czyli np. plik 123.srs spakuje i będzie to 123.srs.zip.
Następnie skrypt zaloguje się na serwer ftp i wrzuci każdy plik do odpowiedniego katalogu. Na razie wypociłem coś takiego:

Kod: Zaznacz cały

#!/bin/bash
filename="*.srs"
logname="log.txt"
filename2="*.dem.zip"
hostname="xxx"
username="xxx"
password="xxxr"
katalog="test"
data=`date`
zip $filename $filename
echo "wysylanie na $hostname pliku o nazwie $filename do katalogu
$katalog"

echo "$data -wyslano do serwera" >> log.txt
ftp -in $hostname <<**

quote USER $username
quote PASS $password

cd test2
cd $katalog
binary
put $filename2
quit


**
Muszę poparwić aby szukał pliku i pakował, jeśli znajdzie, domyślam się, że trzeba użyć ,,while''.
Proszę o pomoc.

Szukanie może odbyć się chyba poprzez:

Kod: Zaznacz cały

find -type f -printf "%p\n" | grep .srs$
Pozdrawiam i życzę Wesołych Świąt.
Czocher
Beginner
Posty: 140
Rejestracja: 26 maja 2007, 23:19

Post autor: Czocher »

Jeżeli szukasz wszystkich plików *.srs tylko w jednym katalogu a nie w drzewie, to możesz to zrobić z pomocą ,,for'':

Kod: Zaznacz cały

for file in *.srs
do

done
Zmienna ,,file'' w połączeniu z ,,for'' przyjmować będzie kolejne pełne nazwy wszystkich plików z rozszerzeniem: .srs
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Może to Ci się przyda:

Kod: Zaznacz cały

find . -type f -iname '*.srs' -exec zip {}.zip {} \;
Znajdzie wszystkie pliki *.srs w bieżącym katalogu i spakuje zipem.
wenu
Posty: 57
Rejestracja: 04 grudnia 2009, 15:15

Post autor: wenu »

lessmian2, ale czy każdy plik będzie osobnym archiwum, czy wszystko w jednym?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Dla każdego pliku *.srs zostanie wywołane polecenie

Kod: Zaznacz cały

zip plik.srs.zip plik.srs
Jeden plik to jedno archiwum zip.
wenu
Posty: 57
Rejestracja: 04 grudnia 2009, 15:15

Post autor: wenu »

Witam.
Na nowo borykam się z tym skryptem lecz w nieco zmienionej formie.

A więc, szukanie plików *srs, pakowanie ich np. zipem z oryginalną nazwą następnie kopiowanie plików do zdefiniowanego katalogu lokalnego a na koniec.

Pozdrawiam i liczę na Waszą pomoc.

Dodane:
Niestety nadal z moim skryptem jest coś nie tak. Szukam w katalogu pliki i pakuję.

Kod: Zaznacz cały

gzip -1f -S .zip /home/(..)
Niestety wynik tego polecenia jakoś obcina pliki. Oryginał pliku zajmuje np. 18MB a spakowany zip 10KB i plik jest uszkodzony. Myślę nad innym formatem, tylko jak to ugryźć?



Pozdrawiam
ODPOWIEDZ