Cách truyền file đến/từ máy chủ Linux bằng SFTP

Hầu hết mọi người thích sử dụng các tiện ích như FileZilla hoặc WinSCP khi cần chuyển file đến hoặc từ máy chủ Linux/BSD. Nếu daemon OpenSSH đang chạy trên máy tính đó, người dùng có thể kết nối với nó thông qua giao thức Secure/SSH FTP (SFTP). Các tiện ích nói trên giúp việc truyền file dễ dàng hơn bằng cách cung cấp giao diện đồ họa, nhưng người dùng phải cài đặt và cấu hình các chương trình đó.

Một số người theo chủ nghĩa đơn giản không muốn phải cài đặt thêm các tiện ích. Những người khác chỉ đơn giản thích dòng lệnh vì nó cho phép kiểm soát nhiều và nhanh hơn để “nói” với tiện ích những gì người dùng muốn nó làm. Nhưng giờ đây, có thêm một lý do để sử dụng dòng lệnh khi muốn truyền file. Theo mặc định, Windows 10 bắt đầu bao gồm một ứng dụng khách OpenSSH cho phép đăng nhập vào máy chủ Linux/BSD trực tiếp từ Command Prompt.

Ứng dụng khách này cũng đi kèm với một loạt các tiện ích khác và SFTP nằm trong số đó. Vì vậy, giờ đây người dùng cũng có thể chuyển file sang hệ điều hành Linux/BSD, trực tiếp từ Command Prompt, mà không phải cài đặt bất cứ thứ gì trên máy tính Windows.

Cách đăng nhập bằng lệnh sftp

Nếu đang ở trên Windows, hãy mở Command Prompt. Nếu đang trên Linux, hãy mở một cửa sổ terminal.

Để đăng nhập vào máy chủ bằng lệnh sftp, hãy sử dụng cú pháp giống hệt như với lệnh ssh.

sftp your_username@IP-address-or-hostname

Các lệnh ví dụ:

sftp john@203.0.113.1
 sftp john@example.com

Đăng nhập bằng lệnh sftp

Cách tải xuống file sau khi đăng nhập bằng sftp

Bây giờ có thể nhập lệnh tại dấu nhắc sftp > để tương tác với các file trên máy chủ.

Để tải xuống một file:

get /path/to/file/on/server

Ví dụ:

get /bin/ls

Lệnh này sẽ tải xuống thư mục hiện hành (thư mục trước khi đăng nhập vào máy chủ). Để tải xuống một thư mục cục bộ cụ thể (trên Windows):

get /path/to/file/on/server C:\path\to\local\folder

Ví dụ:

get /bin/ls C:\User\John\Desktop

Trên Linux, chỉ cần sử dụng các đường dẫn loại Unix (dấu gạch chéo chuyển tiếp thay vì dấu gạch chéo ngược):

get /bin/ls /home/john/Desktop

Lưu ý: Ngay cả khi sử dụng dấu gạch chéo (không chính xác) cho đường dẫn Windows trong sftp, có vẻ như tiện ích vẫn sẽ hiểu chúng.

Đường dẫn cũng có thể là tương đối. Điều này có nghĩa là nếu đã ở trong C:\User\John khi mở Command Prompt, người dùng có thể tải xuống desktop (C:\User\John\Desktop) với:

get /bin/ls Desktop

Các đường dẫn từ xa cũng có thể là tương đối. Có nghĩa là nếu đăng nhập bằng sftp john@203.0.113.1, người dùng đã ở trong thư mục “/home/john”, nên có thể sử dụng nó để tải xuống “/home/john/file”.

get file Desktop

Lệnh này sẽ tải xuống “/home/john/file” vào “C:\Users\YourUser\Desktop\file”.

Tải file

Để sao chép thư mục, người dùng phải thêm tham số -r vào lệnh.

get -r /bin Desktop\bin

Hãy nhớ thêm tên cho thư mục mới muốn tạo cục bộ, như trong “Desktop\bin” trong trường hợp này. Nếu sử dụng get -r /bin Desktop, các file sẽ được sao chép trực tiếp trên Desktop. Nó yêu cầu các file được sao chép, không phải chính thư mục.

Cách upload file lên sau khi đăng nhập bằng sftp

Upload lên các file hoặc thư mục theo cùng các nguyên tắc. Ngoại lệ duy nhất là các đường dẫn bị đảo ngược, nghĩa là trước tiên người dùng chỉ định file/thư mục cục bộ và sau đó là đường dẫn từ xa.

Trên Windows:

put C:\path\to\local\content /path/where/to/upload

Trên Linux:

put /path/to/local/content /path/to/remote/location

Khi upload lên các thư mục, hãy nhớ rằng quy tắc tương tự như trong phần trước được áp dụng. Nó thực sự là các file trong thư mục được sao chép, chứ không phải chính thư mục. Vì vậy, chỉ định một tên mới cho một thư mục muốn sao chép các file đó vào.

put -r Desktop/bin bin

Điều này sẽ tạo ra một thư mục mới có tên là “bin”.

Để thoát khỏi shell sftp, chỉ cần gõ:

exit

Cách tiếp tục chuyển và sử dụng các đường dẫn chứa dấu cách

Khi chuyển một file lớn, nếu bị gián đoạn, người dùng có thể tiếp tục bằng cách thay thế lệnh trước đó bằng reputreget (thay vì putget). Chỉ cần đảm bảo rằng bạn sử dụng chính xác các đường dẫn đã sử dụng trước đó, để nguồn và đích khớp chính xác.

reget /path/to/file/on/server C:\path\to\local\file
 reput C:\path\to\local\file /path/to/file/on/server

Để tiếp tục chuyển thư mục, chỉ cần thêm tham số -r:

reput -r Desktop/bin bin

Nếu đường dẫn đến file chứa khoảng trắng, hãy đặt nó trong dấu ngoặc kép.

Lệnh này không hoạt động:

put C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip

Nhưng lệnh sau thì có:

put "C:\Program Files (x86)\Steam\steamapps\common\The Witcher 3\SOUNDTRACK\The_Witcher_3_Wild_Hunt_-_Official_Soundtrack_(steam_edition)_mp3.zip"

Bài viết này bao gồm những điều quan trọng nhất phải biết về SFTP. Chúc bạn thực hiện thành công!

Thứ Năm, 14/02/2019 17:26
51 👨 235