Jak korzystać z polecenia scp w systemie Linux
Polecenie scp
sprawia, że kopiowanie plików między maszynami z systemem Linux jest proste i bezpieczne. Używa bezpieczeństwa SSH, ale najlepsze jest to, że jest prosty. Jeśli możesz użyć cp
, możesz użyć scp
.
Protokół bezpiecznego kopiowania i scp
Zdefiniujmy kilka terminów: jest SCP i jest scp
. Wielka litera SCP oznacza protokół bezpiecznego kopiowania . Małe litery scp
oznaczają bezpieczne cp
. Innymi słowy, SCP to protokół i scp
program.
scp
został zaprojektowany jako bezpieczny i niezawodny sposób kopiowania plików między zdalnymi komputerami z systemem Linux. Używa SSH do nawiązywania bezpiecznych połączeń. SSH lub bezpieczna powłoka to kryptograficzny protokół sieciowy często używany do uzyskiwania dostępu i logowania się do zdalnych komputerów z systemem Linux. W dystrybucjach systemu Linux funkcjonalność SSH zapewnia OpenSSH.
SCP jest nieco przestarzały i pojawiły się obawy dotyczące jego użycia w dzisiejszych czasach. Od OpenSSH 8.8 SCP jest przestarzały. Nowoczesne implementacje scp
domyślnie korzystają z bezpiecznego protokołu przesyłania plików. SSH jest nadal używany do bezpiecznych połączeń, ale przesyłanie plików odbywa się przez SFTP. Wszystko jest niewidoczne i dzieje się magicznie pod maską, a scp
składnia pozostaje taka sama.
Ten rsync
program jest preferowany scp
, ale możesz napotkać komputer, na którym go nie rsync
zainstalowano i na którym nie masz uprawnień administratora, co oznacza, że nie możesz go zainstalować. Kopiowanie plików z komputera na komputer w sieci offline scp
jest w porządku. Aby scp
pracować, musisz mieć uruchomione SSH na wszystkich komputerach, do iz których będziesz kopiować.
Aby zobaczyć wersję OpenSSH zainstalowaną na twoim komputerze, wpisz:
ssh -V
Kopiowanie pojedynczego pliku
Podobnie jak standardowe cp
polecenie, scp
kopiuje pliki z lokalizacji źródłowej do lokalizacji docelowej. Aby skopiować plik na komputer zdalny, musisz znać adres IP lub nazwę sieciową komputera zdalnego. Musisz również mieć poświadczenia konta użytkownika z uprawnieniami do zapisu dla lokalizacji, do której przesyłasz plik.
Aby wysłać plik o nazwie „sample.txt” do komputera o nazwie „fedora-34” w sieci lokalnej, użyj następującej składni:
scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/
W skład zespołu wchodzą:
- scp: polecenie scp
- ./sample.txt: Plik, który zamierzamy wysłać. Znajduje się w bieżącym katalogu.
- dave@: Konto użytkownika na zdalnym komputerze, na który wyślemy plik.
- fedora-34.local: nazwa sieciowa zdalnego komputera.
- :/home/dave/Downloads/: Lokalizacja do skopiowania pliku na zdalny komputer. Zwróć uwagę na dwukropek „:”, który oddziela nazwę komputera i ścieżkę.
Zostaniesz poproszony o podanie hasła do konta na zdalnym komputerze, po czym plik zostanie skopiowany.
Jeśli chcesz, aby plik miał inną nazwę na zdalnym komputerze, możesz dołączyć nazwę pliku do ścieżki docelowej. Aby skopiować ten sam plik i nazwać go „other-file.txt”, użyj następującej składni:
scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/different-file.txt
Polecenie scp
automatycznie zastąpi istniejące pliki, więc zachowaj ostrożność podczas kopiowania plików. Jeśli plik o tej samej nazwie co skopiowany plik już istnieje na komputerze docelowym, zostanie on nadpisany i utracony.
Jeśli komputer docelowy nie używa domyślnego portu SSH 22, możesz użyć parametru -P
(numer portu), aby określić odpowiedni numer portu.
Pobieranie jednego pliku
Aby skopiować plik z serwera zdalnego, po prostu określ serwer zdalny jako źródło i określ ścieżkę lokalną, do której chcesz skopiować plik jako cel. Zamierzamy skopiować plik o nazwie „development-plan.md” z komputera zdalnego do bieżącego katalogu na komputerze lokalnym.
scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md.
Jeśli dodasz nazwę pliku do ścieżki lokalnej, plik zostanie skopiowany i otrzyma tę nazwę.
scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md. /dp-1.md
Plik jest kopiowany, ale jego nazwa zostaje zmieniona na określoną przez nas nazwę.
ls -hl *.md
Kopiowanie wielu plików
Kopiowanie wielu plików w dowolnym kierunku jest bardzo łatwe. Możesz wyświetlić dowolną liczbę plików źródłowych. Tutaj kopiujemy dwa pliki przecen i plik CSV.
scp. /dp-1.md. /dp-2.md. /dp-3.csv dave@fedora-34.local:/home/dave/Downloads/
Na zdalny komputer kopiowane są trzy pliki. Możesz także użyć symboli wieloznacznych. To polecenie działa tak samo, jak poprzednie polecenie.
scp. /dp. dave@fedora-34.local:/home/dave/Downloads/
Rekurencyjne kopiowanie katalogów
Opcja -r
(rekursywna) umożliwia kopiowanie całych drzew katalogów za pomocą jednego polecenia. Umieściliśmy dwa pliki w katalogu o nazwie „data” i utworzyliśmy katalog o nazwie „CSV” wewnątrz katalogu „data”. Plik CSV umieściliśmy w katalogu „data/CSV”.
To polecenie kopiuje pliki i odtwarza strukturę katalogów na komputerze zdalnym.
scp -r. /data dave@fedora-34.local:/home/dave/Downloads/
Kopiowanie plików między zdalnymi serwerami
Możesz nawet polecić scp
kopiowanie plików z jednego zdalnego serwera na drugi. Składnia jest dość prosta. Podajesz nazwę konta i adres sieciowy serwera źródłowego oraz nazwę konta i adres sieciowy serwera docelowego. Pliki są kopiowane z serwera źródłowego i kopiowane do lokalizacji na serwerze docelowym.
Chociaż składnia jest prosta, upewnienie się, że wszystko inne jest na miejscu, wymaga nieco więcej przemyślenia. Oczywiście lokalizacja, do której próbujesz skopiować pliki na zdalnym serwerze, musi być dostępna z konta użytkownika określonego w wierszu poleceń. A to konto użytkownika musi mieć dostęp do zapisu w tej lokalizacji.
Bardziej subtelnym warunkiem wstępnym jest skonfigurowanie dostępu SSH między komputerem lokalnym a komputerem źródłowym oraz między serwerem źródłowym a docelowym. Upewnij się, że możesz użyć SSH do zalogowania się do serwera docelowego z serwera źródłowego. Jeśli nie możesz tego zrobić, scp
nie będziesz mógł się połączyć.
Zdecydowanie preferowaną metodą jest skonfigurowanie kluczy SSH w celu umożliwienia dostępu uwierzytelnionego, ale bez hasła. Używanie haseł bardzo szybko staje się mylące, a ponieważ pojawia się monit o podanie hasła dla każdego konta użytkownika, nie pozwala to w pełni zautomatyzować procesu za pomocą skryptu.
Konfigurujemy klucze SSH dla kont użytkowników, których używamy na każdym zdalnym serwerze. Zapewniło to dwóm użytkownikom bezproblemowy dostęp SSH do drugiego serwera. To pozwala nam przesyłać pliki w dowolnym kierunku za pomocą tych dwóch kont użytkowników.
Aby skopiować pliki z konta użytkownika „davem” na komputerze Manjaro na konto „dave” na komputerze Fedora za pomocą scp
polecenia wydanego z naszego lokalnego komputera Ubuntu, używana jest następująca składnia:
scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/
Po cichu wracamy do wiersza poleceń. Nic nie wskazuje na to, że coś się stało. Wychodząc z założenia, że żadna wiadomość nie jest dobrą wiadomością, zgłaszamy scp
tylko błędy dla tej zdalnej kopii. Podczas sprawdzania komputera Fedory widzimy, że pliki z komputera Manjaro zostały skopiowane i pobrane.
Domyślnie pliki są kopiowane bezpośrednio z komputera źródłowego na komputer docelowy. Możesz to zmienić, korzystając z opcji -3
(trójstronnej).
Dzięki tej opcji pliki są przesyłane z miejsca docelowego do źródła za pośrednictwem komputera lokalnego. Wymaga to bezproblemowego dostępu SSH z komputera lokalnego do komputera docelowego.
scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/
Nadal nic nie wskazuje na to, że coś się stało, nawet podczas przesyłania plików przez komputer lokalny. Dowodem na pudding jest oczywiście sprawdzenie komputera docelowego.
Inne opcje
Opcja -p
(zachowaj atrybuty pliku) pozwoli zachować oryginalny plik tworzenia, właściciela i flagi dostępu dla przesłanych plików. Będą miały te same metadane, co oryginalne pliki na komputerze źródłowym.
Jeśli zobaczysz komunikaty o błędach, spróbuj ponowić polecenie i użyć -v
flagi (pełny), aby wyświetlić szczegółowe informacje o próbie transferu. Powinieneś być w stanie określić punkt awarii w danych wyjściowych.
Opcja -C
(kompresuj) kompresuje pliki podczas ich kopiowania i dekompresuje je po otrzymaniu. To coś, co sięga czasów wolnej komunikacji modemowej między komputerami. Zmniejszenie rozmiaru ładunku może skrócić czas transmisji.
Obecnie czas poświęcony na kompresowanie i dekompresowanie plików to prawdopodobnie więcej niż różnica między transferami skompresowanymi i nieskompresowanymi. Ale ponieważ scp
najlepiej nadaje się do kopiowania plików między komputerami w tej samej sieci lokalnej, szybkość transferu nie powinna być dużym problemem.
Dodaj komentarz