Skrypt transferu plików SSH


Chcę przenieść określone typy plików z katalogu na serwerze. Oto scena:
Struktura katalogów
firmy/compA/filedir/

firma/kompB/filedir/

firmy/compC/filedir/
Dlatego chcę przenieść pliki * .csv z katalogów filedir z każdej firmy na inny serwer. Chcę używać ssh do przesyłania plików. Czy ktoś używał ssh do przesyłania plików w skrypcie powłoki? Jak radzisz sobie z tą sytuacją?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Posługiwać się
         scp
lub
         rsync
.
         scp
używa ssh do kopiowania plików do iz podłączonych komputerów. Przykład składni kopiowania z komputera lokalnego do zdalnego hosta:
scp -r companies/compA/filedir username@remote.host.address:/some/remote/directory

Będziesz musiał użyć kluczy publicznych/prywatnych, aby ułatwić logowanie, jeśli jeszcze tego nie zrobiłeś
         ssh
.
         rsync
może używać ssh do łączenia się z innym serwerem. Przykładowa składnia byłaby następująca:
rsync -avz -e ssh remoteuser@remotehost:/remote/dir/companies/compA/filedir

Wymagane będą również klucze publiczne/prywatne.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Naprawdę chcesz użyć scp, który używa SSH. Jeśli zamiast tego chcesz użyć rsync, możesz użyć
         -e ssh
argument.
Jeśli chodzi o skrypt, prawdopodobnie utworzysz albo 1) pętlę for, która iteruje po tablicy zawierającej listę wszystkich lokalizacji i uruchamia odpowiednie polecenie scp/rsync, LUB 2) możesz użyć instrukcji find, która przechodzi i wykonuje każdy scp/rsync dla Ciebie.
Przykładowe polecenie find wyglądałoby mniej więcej tak (nieprzetestowane):
         find/dir/companies/*/filedir/ -type f -name \*.csv -exec scp {} username@otherserver.tld \;
Sugeruję, aby jeśli używasz SSH do dowolnego typu transferu, skonfiguruj pewnego rodzaju uwierzytelnianie za pomocą klucza publicznego, aby nie pojawiać się monit o podanie hasła.
W razie potrzeby mogę rozwinąć więcej, po prostu próbując pomóc Ci zacząć i wskazać właściwy kierunek.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie używałbyś ssh - powinieneś używać scp lub sftp. Ale powiedziawszy, że najlepszym rozwiązaniem byłoby uruchomienie rsync przez ssh, aby uniknąć kopiowania plików, które już masz, ale jest to opcja tylko wtedy, gdy rsync jest dostępny (lub można go zainstalować na zdalnym systemie).
Aby uniknąć konieczności wprowadzania hasła, musisz najpierw ustawić parę kluczy, a następnie po prostu:
#!/bin/bashscp somuser@server:/companies/compA/filedir/*.csv/local/compa/filedir
scp somuser@server:/companies/compB/filedir/*.csv/local/compb/filedir
scp somuser@server:/companies/compC/filedir/*.csv/local/compC/filedir
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

firmy scp/komp?/filedir/*. csv 192.168.1.200:/remotedir to adres IP 192.168.1.200 zdalnego serwera.
Jeśli chcesz mieć użytkownika i jesteś w przeszłości, powinieneś sprawdzić podręcznik scp (man scp), ale uważam, że nie możesz określić ich w poleceniu scp. Zamiast tego powinieneś używać kluczy.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się