Jak wgrać plik na serwer ftp

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Jak wgrać plik na serwer ftp

Post autor: cent4 »

Witam.
Mam taką sytuację - raz w tygodniu tworzy się backup - 8GB plik gz.
Chcę zbudować skrypt w bashu, który ten plik przegra na serwer ftp, a następnie go skasuje - potem dam sobie ten skrypt do crona i będzie mi się to wykonywać cyklicznie ale nigdy nie robiłem nic w skryptach i nie wiem jak napisać takowy skrypt...
Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: Jak wgrać plik na serwer ftp

Post autor: Pajaczek »

Ale pytasz o co?
Jak się pisze w bashu? - sądzę że przykładów i tutoriali znajdziesz od metra. A zawsze jeszcze masz man bash.
Jak najlepiej skopiować coś między maszynami? - scp, rsync, ftp... pewnie scp jest tutaj najłatwiejszy.
Przyda się jeszcze dodanie hosta-źródła do known-hostów na maszynie docelowej, by nie trzeba było podawać hasła (jeśli skrypt kopiujący będzie na maszynie źródłowej), lub odwrotnie: hosta-celu na maszynie źródłowej (jeśli skrypt będzie na maszynie docelowej).

A najprostszy skrypt w bashu

Kod: Zaznacz cały

#!/bin/bash
echo "Hello Slackware"
exit 0
Awatar użytkownika
webster
Użytkownik
Posty: 1269
Rejestracja: 2009-10-06, 11:58
Lokalizacja: Gdańsk
Kontakt:

Re: Jak wgrać plik na serwer ftp

Post autor: webster »

ftp'em backup wysyłać? Kripi. nie lepiej SCP bazując na kluczu RSA? Ewentualnie nie lepiej mieć zamontowany katalog np po SMB i bezpośrednio backup robić do mounta ?
††† Chaos Of The Mirror - Valheru †††
††† I ♥ SlackWare RuLeZ †††

Slackware Poland FaceBook
Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: Jak wgrać plik na serwer ftp

Post autor: Pajaczek »

A co... nie da się... da się.
Ale też wyraźnie sugerowałem że scp jest tutaj najprzyjaźniejszy. Oraz o dodaniu klucza... cieszę się że potwierdzasz moje sugestie ;)
Mount smb nie zawsze jest dobrym pomysłem, nie zawsze jest wydajny, nie zawsze jest nawet możliwy... np. jak chcemy backupować na maszynie... gdzieś... hen hen, gdzie nie mamy np. vpn'a.
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: Jak wgrać plik na serwer ftp

Post autor: cent4 »

Zbudowałem poniższy skrypt:

Kod: Zaznacz cały

#!/bin/sh
HOST='zzzz'
USER='user'
PASSWD='password'
FILE='/backups/kopia1.zip /kopia/kopia1.zip'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0
Dokładnie chodzi o komendę put. Plik, który będę kopiować będzie ciągle miał inną nazwę - jak zrobić, żeby put kopiował cokolwiek znajdzie w /backups/* i żeby kopiował to pod tą samą nazwą do /kopia/*

Jak później skasować ten plik po udanej kopii?
Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: Jak wgrać plik na serwer ftp

Post autor: Pajaczek »

Odpowiedź (częściową) masz w manualu:
"put local-file [remote-file]
... If remote-file is left unspecified, the local file name is used after processing according to any ntrans or nmap settings in naming the remote file."

Po pierwsze wyodrębnij SRC i DST z FILE - to taka rada na przyszłość przy pisaniu skryptów.
Po drugie, skoro mają mieć inne nazwy, to nie rozumiem sztywnego "kopia.zip"
Po trzecie: co się tak uparłeś na ten ftp? To że napisałem że się da, nie znaczy że jest to dobre rozwiązanie. Użyj scp jak Ci z Websterem sugerujemy od początku.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Jak wgrać plik na serwer ftp

Post autor: mina86 »

No i oczywiście nie zapomnij zmienić trybu na binarny.

Tak jak webster i ja sugeruję użycie scp z kluczem. Wygodniej się skrypt tworzy, połączenie jest zabezpieczone, a jak na serwerze się zmieni shell na rssh lub scponly, powyłącza forwardowanie itp, to i bezpieczniejsze.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
ODPOWIEDZ