Thư mục sao chép Python từ máy chủ từ xa

Unix là một trong những hệ điều hành mạnh nhất. Trong các hệ điều hành dựa trên Unix, chúng ta có thể sử dụng SCP [Giao thức sao chép an toàn] [sử dụng lệnh SCP] để sao chép an toàn các tệp và thư mục từ máy chủ này sang máy chủ khác từ xa mà không cần bắt đầu phiên FTP hoặc thậm chí đăng nhập rõ ràng vào bất kỳ hệ thống từ xa nào

Trong hướng dẫn này, bạn sẽ tìm hiểu về các thao tác đơn giản sẽ triển khai Giao thức sao chép an toàn để truyền và quản lý tệp

Giao thức sao chép an toàn [SCP] là gì?

Giao thức sao chép an toàn [SCP] là một giao thức hỗ trợ tải lên hoặc tải xuống dữ liệu hoặc tệp một cách an toàn đến và từ bất kỳ hệ thống từ xa nào. Lệnh scp giúp sử dụng SSH để truyền dữ liệu. Trong quá trình này, nó yêu cầu mật khẩu hoặc cụm mật khẩu giúp xác thực quy trình

SCP cũng mã hóa tệp và mật khẩu được trao đổi để xác thực vì bất kỳ kẻ độc hại nào nếu rình mò vào mạng sẽ không thể đọc hoặc giải mã các tệp hoặc dữ liệu. Lệnh SCP chạy trên cổng số 22

Nó sử dụng giao thức kiểm soát tốc độ [RCP] để truyền tệp và giao thức SSH để hiển thị xác thực & mã hóa. Vì vậy, SCP là sự pha trộn của hai giao thức

cú pháp

scp [options] user_name1@source_host:directory1 / file_name1 user_name2@destination_host:directory2 / file_name2

ở đâu, tên người dùng1@source_host. thư mục1/tên_tệp1 chỉ định vị trí tệp nguồn, bao gồm các mục sau

  • Đó là tên tài khoản trên máy chủ [user_name1]
  • Tên máy chủ xác định tên máy tính chứa tệp nguồn của bạn [source_host]
  • Tên thư mục xác định vị trí thư mục chứa tệp nguồn [thư mục 1]
  • Điều này [file_name1] xác định tên tệp của tệp nguồn

Tạo thư mục bằng cách tải xuống tệp hoặc thư mục bằng SCP

Nếu muốn sử dụng giao thức sao chép an toàn để tải xuống bất kỳ tệp nào từ máy chủ từ xa về máy cục bộ của mình, thì bạn phải sử dụng lệnh trong thiết bị đầu cuối cùng với cờ -r. Nó sẽ yêu cầu lệnh scp sao chép đệ quy tất cả nội dung thư mục vào máy cục bộ của bạn

$scp -r userName@ssh.example.com:/path/to/remote/sourceLoc /path/to/local/destinationLoc

Cách sử dụng này quá đơn giản phải không nào.

Cờ -r này được sử dụng làm cây thư mục có thể di chuyển đệ quy từng tệp trong thư mục đó và tải xuống những tệp mà nó gặp phải.
Nếu thư mục nguồn không tồn tại ở vị trí đích đã đề cập trên máy chủ, lệnh sẽ tạo một thư mục. Tuy nhiên, nếu đường dẫn đích không tồn tại, bạn sẽ gặp phải lỗi hoặc sự cố và điều này có thể dẫn đến lệnh scp dự kiến không thành công.

Tải lên một thư mục bằng SCP

Kỹ thuật tải lên cũng sử dụng cơ chế tương tự như kỹ thuật tải xuống. Sự khác biệt duy nhất mà bạn có thể nhận thấy là thư mục nguồn trong lệnh thực tế

Có, chúng tôi phải chỉ định thư mục nguồn bằng một lệnh thực tế cụ thể

Bây giờ chúng ta hãy lấy một ví dụ về mã sử dụng lệnh scp để tải lên một thư mục

$scp -r /path/to/local/sourceLoc userName@ssh.domainPath.com:/path/to/remote/destinationLoc

Ở đây bạn đã thấy rằng đường dẫn nguồn [sourceLoc] đến trước. Điều này giả định rằng nó đang đề cập đến thư mục máy cục bộ của bạn. Sau đó, nó được gán đệ quy cho máy đích bằng cách sử dụng cờ -r, theo cách bạn đã làm trước đây

Phần kết luận

Nếu bạn muốn biết thêm về lệnh scp, bạn có thể gõ lệnh

"người đàn ông scp"

trong thiết bị đầu cuối của bạn để kiểm tra các tài liệu về từng lệnh và cú pháp của nó. Lệnh này là một trong những cách đơn giản và an toàn [được mã hóa] để truyền dữ liệu từ xa giữa các máy. Ngoài việc tạo một thư mục, tải lên và tải xuống các tệp thông qua nó, người dùng cũng có thể sử dụng SCP trong công cụ Putty [] để tạo liên lạc an toàn, truyền tệp từ xa, v.v.

Cách dễ nhất để sao chép tệp từ máy chủ này sang máy chủ khác qua ssh là sử dụng lệnh scp. Để gọi scp, bạn cần mô-đun quy trình con.  

ví dụ

import subprocess
p = subprocess.Popen[["scp", "my_file.txt", "username@server:path"]]
sts = os.waitpid[p.pid, 0]

Bạn cần lệnh gọi waitpid để đợi quá trình sao chép hoàn tất

Một giải pháp khác là mở kết nối ssh và sử dụng mô-đun scp.  

ví dụ

from paramiko import SSHClient
from scp import SCPClient
ssh = SSHClient[]
ssh.load_system_host_keys[]
ssh.connect['user@server:path']
with SCPClient[ssh.get_transport[]] as scp:
    scp.put['my_file.txt', 'my_file.txt'] # Copy my_file.txt to the server

Làm cách nào để sao chép tệp từ máy chủ này sang máy chủ khác bằng Python?

Cách dễ nhất để sao chép tệp từ máy chủ này sang máy chủ khác qua ssh là sử dụng lệnh scp . Để gọi scp, bạn cần mô-đun quy trình con.

Bạn có thể sao chép một thư mục với scp?

Để sao chép một thư mục [và tất cả các tệp trong đó], hãy sử dụng scp với tùy chọn -r . Điều này yêu cầu scp sao chép đệ quy thư mục nguồn và nội dung của nó. Bạn sẽ được nhắc nhập mật khẩu của mình trên hệ thống nguồn [ deathstar. com ]. Lệnh sẽ không hoạt động trừ khi bạn nhập đúng mật khẩu.

Chủ Đề