Przesyłanie plików ze zdalnego do lokalnego za pomocą protokołu SCP

Shell

Bezpieczne kopiowanie plików: przewodnik po korzystaniu z SCP

Protokół Secure Copy Protocol (SCP) to potężne narzędzie do bezpiecznego przesyłania plików i katalogów pomiędzy zdalnym serwerem a maszyną lokalną. Jeśli często korzystasz z protokołu SSH w celu uzyskania dostępu do swojego serwera, wiedza o tym, jak efektywnie korzystać z protokołu SCP, może usprawnić przepływ pracy, zapewniając możliwość szybkiego i bezpiecznego kopiowania ważnych plików ze zdalnego serwera do systemu lokalnego.

W tym przewodniku przeprowadzimy Cię przez procedurę kopiowania zdalnego folderu o nazwie „foo” do lokalnego katalogu /home/user/Desktop. Niezależnie od tego, czy zarządzasz kopiami zapasowymi, wdrażasz kod, czy po prostu chcesz przenieść pliki, zrozumienie poleceń SCP sprawi, że Twoje zadania będą łatwiejsze i wydajniejsze.

Komenda Opis
scp -r Bezpiecznie kopiuje całe katalogi z komputera zdalnego na lokalny.
paramiko.SFTPClient.from_transport() Tworzy klienta SFTP na podstawie istniejącego transportu SSH.
os.makedirs() Tworzy katalog rekurencyjnie, upewniając się, że zostały utworzone wszystkie katalogi średniego poziomu.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Automatycznie dodaje klucz hosta serwera bez monitowania, przydatne w przypadku tworzenia skryptów.
scp.listdir_attr() Wyświetla listę atrybutów plików w katalogu, umożliwiając funkcję kopiowania rekurencyjnego.
paramiko.S_ISDIR() Sprawdza, czy dana ścieżka jest katalogiem, pomagając w kopiowaniu rekurencyjnym.
scp.get() Kopiuje plik ze zdalnego serwera na komputer lokalny.

Szczegółowe wyjaśnienie skryptów SCP

Pierwszy przykład skryptu demonstruje użycie metody polecenie skopiowania katalogu zdalnego na komputer lokalny. The Command, czyli protokół Secure Copy Protocol, to narzędzie wiersza poleceń, które wykorzystuje SSH do bezpiecznego przesyłania plików między zdalnym hostem a maszyną lokalną. The flaga w poleceniu określa, że ​​operacja powinna być rekurencyjna, co oznacza, że ​​skopiuje wszystkie pliki i katalogi w określonym katalogu. Struktura poleceń jest prosta: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Tutaj, określa zdalnego użytkownika i hosta, oraz I są odpowiednio ścieżką źródłową i docelową.

Drugim przykładem jest skrypt powłoki, który automatyzuje proces SCP. Skrypt ten definiuje zmienne dla zdalnego użytkownika, hosta i ścieżek, co ułatwia ich ponowne użycie i modyfikację. Skrypt używa w skrypcie Bash do przesyłania plików, co pomaga w scenariuszach, w których wymagane są powtarzalne transfery. Zawiera także powiadomienie informujące użytkownika o zakończeniu przesyłania. Trzeci przykład wykorzystuje język Python z biblioteką Paramiko, co jest szczególnie przydatne w przypadku bardziej złożonych lub zautomatyzowanych przepływów pracy. Skrypt konfiguruje klienta SSH i używa pliku metoda tworzenia sesji SFTP. Następnie definiuje funkcję rekurencyjnego kopiowania plików ze zdalnego serwera do katalogu lokalnego za pomocą I paramiko.S_ISDIR() aby rozróżnić pliki i katalogi. To podejście jest korzystne dla tych, którzy wolą pisać skrypty w Pythonie i muszą zintegrować funkcję przesyłania plików z większymi skryptami automatyzującymi.

Używanie protokołu SCP do przesyłania plików z serwera zdalnego na komputer lokalny

Skrypt powłoki dla SCP

# Basic SCP command to copy a remote folder to a local directory
scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/

# Breakdown of the command:
# scp: invokes the SCP program
# -r: recursively copies entire directories
# user@remote_host:/path/to/remote/folder: specifies the user and path to the remote folder
# /home/user/Desktop/: specifies the local destination directory

# Example usage with real values:
scp -r user@example.com:/var/www/foo /home/user/Desktop/

Automatyzacja transferu SCP za pomocą skryptu powłoki

Skrypt powłoki do automatyzacji SCP

#!/bin/bash
# This script automates the SCP process

# Variables
REMOTE_USER="user"
REMOTE_HOST="remote_host"
REMOTE_PATH="/path/to/remote/folder"
LOCAL_PATH="/home/user/Desktop/"

# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} ${LOCAL_PATH}

# Notify user of completion
echo "Files have been copied successfully from ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} to ${LOCAL_PATH}"

Skrypt Pythona do przesyłania plików SCP

Skrypt Pythona wykorzystujący bibliotekę Paramiko

import paramiko
import os

# Establish SSH client
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='user', password='password')

# SCP command
scp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# Define remote and local paths
remote_path = '/path/to/remote/folder'
local_path = '/home/user/Desktop/'

# Function to recursively copy files
def recursive_copy(remote_path, local_path):
    os.makedirs(local_path, exist_ok=True)
    for item in scp.listdir_attr(remote_path):
        remote_item = remote_path + '/' + item.filename
        local_item = os.path.join(local_path, item.filename)
        if paramiko.S_ISDIR(item.st_mode):
            recursive_copy(remote_item, local_item)
        else:
            scp.get(remote_item, local_item)

# Start copy process
recursive_copy(remote_path, local_path)

# Close connections
scp.close()
ssh.close()
print(f"Files have been copied successfully from {remote_path} to {local_path}")

Zaawansowane wykorzystanie SCP: porady i wskazówki

Poza podstawowym użyciem w przypadku kopiowania plików i katalogów istnieje kilka zaawansowanych technik i opcji, które mogą poprawić jakość przesyłania plików. Przydatną funkcją jest możliwość ograniczenia przepustowości wykorzystywanej podczas transferu, co może być szczególnie pomocne podczas pracy z ograniczonymi zasobami sieciowymi. Można to osiągnąć za pomocą opcję, po której następuje limit przepustowości w kilobitach na sekundę, na przykład . Inną przydatną opcją jest -C flagę, która umożliwia kompresję, potencjalnie przyspieszając przesyłanie dużych plików.

Bezpieczeństwo to kolejny krytyczny aspekt, który należy wziąć pod uwagę podczas użytkowania . Chwila z natury używa SSH do bezpiecznych transferów, istnieją dodatkowe kroki, które możesz podjąć, aby zwiększyć bezpieczeństwo. Na przykład użycie kluczy SSH do uwierzytelnienia zamiast haseł może znacznie poprawić bezpieczeństwo i wygodę. Dodatkowo możesz określić inny port SSH za pomocą opcję, jeśli Twój serwer nie używa domyślnego portu 22. Na przykład scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ umożliwia połączenie z serwerem obsługującym SSH na porcie 2222.

  1. Jak skopiować plik z lokalnego na zdalny za pomocą SCP?
  2. Możesz użyć .
  3. Jak mogę sprawdzić postęp transferu SCP?
  4. Użyj opcja włączenia trybu szczegółowego: .
  5. Czy mogę zachować atrybuty plików podczas korzystania z SCP?
  6. Tak, użyj możliwość zachowania czasów modyfikacji, czasów dostępu i trybów: .
  7. Jak używać SCP z innym kluczem SSH?
  8. Określ klucz SSH za pomocą opcja: .
  9. Jak sobie poradzić z przesyłaniem dużych plików za pomocą SCP?
  10. Użyj opcja kompresji i opcja ograniczenia przepustowości: .
  11. Jak przesyłać pliki za pomocą SCP przez inny port SSH?
  12. Użyj możliwość określenia portu: .
  13. Czy SCP może obsługiwać dowiązania symboliczne?
  14. Tak opcja skopiuje dowiązania symboliczne, a także pliki i katalogi.
  15. Co się stanie, jeśli transfer SCP zostanie przerwany?
  16. Uruchom ponownie polecenie wznowienia transferu; pominie pliki, które zostały już skopiowane.
  17. Jak używać SCP z hasłem w skrypcie?
  18. Zamiast tego zaleca się używanie kluczy SSH, ale możesz użyć narzędzi takich jak do uwierzytelniania hasłem w skryptach.

Zrozumienie, jak używać protokołu SCP do przesyłania plików i katalogów ze zdalnego serwera na komputer lokalny, może znacznie zwiększyć wydajność przepływu pracy. Opanowując zarówno podstawowe polecenia, jak i zaawansowane techniki, możesz zapewnić bezpieczne i wydajne przesyłanie danych. Niezależnie od tego, czy kopiujesz pojedyncze pliki, czy całe katalogi, automatyzujesz zadania za pomocą skryptów, czy używasz języka Python do bardziej złożonych operacji, SCP pozostaje wszechstronnym i potężnym narzędziem do zarządzania danymi.