Chuyển tập tin từ xa sang cục bộ bằng SCP

Chuyển tập tin từ xa sang cục bộ bằng SCP
Shell

Sao chép tập tin an toàn: Hướng dẫn sử dụng SCP

Giao thức sao chép an toàn (SCP) là một công cụ mạnh mẽ để truyền các tệp và thư mục một cách an toàn giữa máy chủ từ xa và máy cục bộ. Nếu bạn thường xuyên sử dụng SSH để truy cập máy chủ của mình, việc biết cách sử dụng SCP hiệu quả có thể hợp lý hóa quy trình làm việc của bạn, đảm bảo rằng bạn có thể sao chép nhanh chóng và an toàn các tệp quan trọng từ máy chủ từ xa sang hệ thống cục bộ của mình.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn các bước để sao chép thư mục từ xa có tên "foo" vào thư mục cục bộ của bạn tại /home/user/Desktop. Cho dù bạn đang quản lý bản sao lưu, triển khai mã hay chỉ cần di chuyển tệp, việc hiểu các lệnh SCP sẽ giúp công việc của bạn dễ dàng và hiệu quả hơn.

Yêu cầu Sự miêu tả
scp -r Sao chép an toàn toàn bộ thư mục từ xa sang máy cục bộ.
paramiko.SFTPClient.from_transport() Tạo ứng dụng khách SFTP từ phương tiện truyền tải SSH hiện có.
os.makedirs() Tạo một thư mục theo cách đệ quy, đảm bảo tất cả các thư mục cấp trung gian đều được tạo.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Tự động thêm khóa máy chủ của máy chủ mà không cần nhắc, hữu ích cho việc viết kịch bản.
scp.listdir_attr() Liệt kê các thuộc tính của tệp trong một thư mục, cho phép chức năng sao chép đệ quy.
paramiko.S_ISDIR() Kiểm tra xem đường dẫn đã cho có phải là thư mục hay không, hỗ trợ sao chép đệ quy.
scp.get() Sao chép một tập tin từ máy chủ từ xa sang máy cục bộ.

Giải thích chi tiết về tập lệnh SCP

Ví dụ về tập lệnh đầu tiên thể hiện việc sử dụng scp -r lệnh sao chép một thư mục từ xa vào máy cục bộ. Các scp lệnh, viết tắt của Giao thức sao chép an toàn, là một công cụ dòng lệnh sử dụng SSH để truyền tệp một cách an toàn giữa máy chủ từ xa và máy cục bộ. Các -r cờ trong lệnh chỉ định rằng thao tác phải đệ quy, nghĩa là nó sẽ sao chép tất cả các tệp và thư mục trong thư mục đã chỉ định. Cấu trúc lệnh rất đơn giản: scp -r user@remote_host:/path/to/remote/folder /home/user/Desktop/. Đây, user@remote_host chỉ định người dùng và máy chủ từ xa và /path/to/remote/folder/home/user/Desktop/ lần lượt là các đường dẫn nguồn và đích.

Ví dụ thứ hai là tập lệnh shell tự động hóa quy trình SCP. Tập lệnh này xác định các biến cho người dùng, máy chủ và đường dẫn từ xa, giúp dễ dàng sử dụng lại và sửa đổi. Kịch bản sử dụng scp -r trong tập lệnh Bash để truyền tệp, điều này giúp ích trong các trường hợp yêu cầu chuyển lặp đi lặp lại. Nó cũng bao gồm một tin nhắn thông báo để thông báo cho người dùng khi quá trình truyền hoàn tất. Ví dụ thứ ba sử dụng Python với thư viện Paramiko, thư viện này đặc biệt hữu ích cho các quy trình làm việc phức tạp hoặc tự động hơn. Tập lệnh thiết lập máy khách SSH và sử dụng số 8 phương pháp tạo phiên SFTP. Sau đó, nó định nghĩa một hàm để sao chép đệ quy các tập tin từ máy chủ từ xa sang thư mục cục bộ bằng cách sử dụng scp.listdir_attr()paramiko.S_ISDIR() để phân biệt giữa tập tin và thư mục. Cách tiếp cận này có lợi cho những người thích viết kịch bản bằng Python và cần tích hợp chức năng truyền tệp vào các tập lệnh tự động hóa lớn hơn.

Sử dụng SCP để truyền tệp từ máy chủ từ xa sang máy cục bộ

Tập lệnh Shell cho 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/

Tự động chuyển SCP bằng Shell Script

Tập lệnh Shell để tự động hóa 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}"

Tập lệnh Python để truyền tệp SCP

Tập lệnh Python sử dụng thư viện 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}")

Cách sử dụng SCP nâng cao: Mẹo và thủ thuật

Ngoài cách sử dụng cơ bản của scp để sao chép tệp và thư mục, có một số kỹ thuật và tùy chọn nâng cao có thể nâng cao trải nghiệm truyền tệp của bạn. Một tính năng hữu ích là khả năng giới hạn băng thông được sử dụng trong quá trình truyền, tính năng này có thể đặc biệt hữu ích khi làm việc với tài nguyên mạng hạn chế. Điều này có thể đạt được bằng cách sử dụng -l tùy chọn theo sau là giới hạn băng thông tính bằng kilobit trên giây, ví dụ: scp -r -l 1000 user@remote_host:/path/to/remote/folder /home/user/Desktop/. Một lựa chọn hữu ích khác là -C cờ, cho phép nén, có khả năng tăng tốc độ truyền các tệp lớn.

Bảo mật là một khía cạnh quan trọng khác cần xem xét khi sử dụng scp. Trong khi scp vốn sử dụng SSH để truyền an toàn, bạn có thể thực hiện các bước bổ sung để tăng cường bảo mật. Ví dụ: sử dụng khóa SSH để xác thực thay vì mật khẩu có thể cải thiện đáng kể tính bảo mật và tiện lợi. Ngoài ra, bạn có thể chỉ định một cổng SSH khác bằng cách sử dụng -P tùy chọn nếu máy chủ của bạn không sử dụng cổng 22 mặc định. Ví dụ: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/ cho phép bạn kết nối với máy chủ chạy SSH trên cổng 2222.

Các câu hỏi và câu trả lời thường gặp về SCP

  1. Làm cách nào để sao chép tệp từ cục bộ sang từ xa bằng SCP?
  2. Bạn có thể dùng scp local_file user@remote_host:/path/to/remote/directory.
  3. Làm cách nào tôi có thể kiểm tra tiến trình chuyển SCP?
  4. Sử dụng -v tùy chọn để bật chế độ dài dòng: scp -v -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  5. Tôi có thể giữ nguyên các thuộc tính của tệp trong khi sử dụng SCP không?
  6. Có, hãy sử dụng -p tùy chọn để duy trì thời gian sửa đổi, thời gian truy cập và chế độ: scp -p -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  7. Làm cách nào để sử dụng SCP bằng khóa SSH khác?
  8. Chỉ định khóa SSH bằng -i lựa chọn: scp -i /path/to/key -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  9. Làm cách nào để xử lý việc truyền tệp lớn bằng SCP?
  10. Sử dụng -C tùy chọn nén và -l tùy chọn để giới hạn băng thông: scp -C -l 1000 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  11. Làm cách nào để truyền tệp bằng SCP qua cổng SSH khác?
  12. Sử dụng -P tùy chọn để chỉ định cổng: scp -P 2222 -r user@remote_host:/path/to/remote/folder /home/user/Desktop/.
  13. SCP có thể xử lý các liên kết tượng trưng không?
  14. Vâng -r tùy chọn sẽ sao chép các liên kết tượng trưng cũng như các tập tin và thư mục.
  15. Điều gì xảy ra nếu quá trình truyền SCP bị gián đoạn?
  16. Chạy lại scp lệnh tiếp tục chuyển giao; nó sẽ bỏ qua các tập tin đã được sao chép.
  17. Làm cách nào để sử dụng SCP bằng mật khẩu trong tập lệnh?
  18. Thay vào đó, bạn nên sử dụng khóa SSH, nhưng bạn có thể sử dụng các công cụ như sshpass để xác thực mật khẩu trong tập lệnh.

Suy nghĩ cuối cùng về việc sử dụng SCP

Hiểu cách sử dụng SCP để truyền tệp và thư mục từ máy chủ từ xa sang máy cục bộ có thể nâng cao đáng kể hiệu quả quy trình làm việc của bạn. Bằng cách nắm vững cả các lệnh cơ bản và kỹ thuật nâng cao, bạn có thể đảm bảo truyền dữ liệu an toàn và hiệu quả. Cho dù bạn đang sao chép các tệp đơn lẻ hay toàn bộ thư mục, tự động hóa các tác vụ bằng tập lệnh hay sử dụng Python cho các hoạt động phức tạp hơn, SCP vẫn là một công cụ linh hoạt và mạnh mẽ đáp ứng nhu cầu quản lý dữ liệu của bạn.