Lệnh ftp trong Linux — Truyền tải dữ liệu giữa các máy chủ

Bạn đã bao giờ gặp tình huống cần chuyển một tệp tin cấu hình lớn từ máy tính cá nhân lên máy chủ VPS để triển khai dịch vụ ngay lập tức chưa nhỉ? Trong vai trò một Senior System Admin, mình đã từng phải xử lý hàng loạt yêu cầu truyền tải dữ liệu giữa các server khác nhau, và tất nhiên, sự nhanh chóng cùng tính chính xác luôn là ưu tiên hàng đầu. Vậy ftp là gì và tại sao nó vẫn giữ được vị thế quan trọng trong quản trị hệ thống đến vậy?

ftp là một giao thức tiêu chuẩn được sử dụng để truyền tải tập tin qua mạng Internet. Nếu bạn đang tìm hiểu cách dùng ftp để quản lý dữ liệu một cách hiệu quả, thì bài viết này chính là dành cho bạn. Chúng ta sẽ cùng khám phá chi tiết về ftp Linux, từ những khái niệm cơ bản đến các kỹ thuật chuyên sâu. Hiểu rõ cách truyền tệp tin qua mạng sẽ giúp bạn làm chủ các hệ thống từ máy chủ cục bộ cho đến vps một cách vô cùng dễ dàng, đúng không nào?

Cần chuẩn bị gì trước khi dùng lệnh ftp?

  • Quyền user: Có thể thực hiện với tư cách user thường, tuy nhiên cần quyền quản trị để cài đặt package hoặc cấu hình file hệ thống liên quan.
  • Distro/OS hỗ trợ: Hỗ trợ hầu hết các hệ điều hành dựa trên Unix/Linux như Ubuntu, Debian, CentOS, RHEL, Fedora và macOS.
  • Package dependencies: Nếu hệ thống chưa có sẵn, cần cài đặt gói ftp qua trình quản lý gói:
    • Ubuntu/Debian: sudo apt update && sudo apt install ftp
    • CentOS/RHEL/Fedora: sudo yum install ftp hoặc sudo dnf install ftp
    • macOS: Thường được cài đặt sẵn qua Homebrew bằng lệnh brew install inetutils

Cú pháp lệnh ftp là gì?

Lệnh ftp hỗ trợ các dạng cú pháp tương tác và dòng lệnh trên các hệ thống Linux/Unix.

ftp [OPTIONS] [HOST] [PORT]

Các tùy chọn của lệnh ftp là gì?

Lệnh ftp cung cấp các tùy chọn dòng lệnh phân theo hai nhóm chính: kiểm soát hành vi kết nối và điều chỉnh chế độ truyền dữ liệu.

Tùy chọn ngắn Tùy chọn dài Mô tả
-4 ftp -4 buộc kết nối chỉ sử dụng địa chỉ IPv4.
-6 ftp -6 buộc kết nối chỉ sử dụng địa chỉ IPv6.
-a ftp -a cho phép đăng nhập tự động bằng tài khoản anonymous thay vì nhập thông tin xác thực thủ công.
-d ftp -d bật chế độ debug, hiển thị toàn bộ lệnh FTP được gửi và nhận giữa client và server.
-e ftp -e tắt tính năng chỉnh sửa dòng lệnh (command editing) và lịch sử lệnh trong phiên làm việc.
-g ftp -g tắt tính năng mở rộng ký tự đại diện (glob) trong tên tệp khi thực hiện các lệnh get và mget.
-i ftp -i tắt chế độ xác nhận tương tác khi truyền nhiều tệp, cho phép thực hiện mget hoặc mput mà không cần xác nhận từng tệp.
-n ftp -n ngăn ftp tự động đăng nhập (auto-login) khi kết nối tới server, buộc người dùng đăng nhập thủ công.
-o ftp -o chỉ định tệp đích cục bộ khi tải tệp từ server về máy.
-p ftp -p bật chế độ passive (PASV), cho phép client khởi tạo kết nối dữ liệu thay vì server, phù hợp khi hoạt động sau tường lửa hoặc NAT.
-r ftp -r chỉ định số lần thử lại kết nối khi kết nối tới server thất bại.
-s ftp -s chỉ định tệp script chứa danh sách lệnh FTP để thực thi tự động sau khi kết nối thành công.
-t ftp -t bật chế độ theo dõi gói tin (packet tracing) để ghi lại chi tiết quá trình truyền dữ liệu.
-u ftp -u tắt tính năng tự động lưu thông tin xác thực vào tệp ~/.netrc sau phiên làm việc.
-v ftp -v bật chế độ verbose, hiển thị toàn bộ phản hồi từ server trong quá trình kết nối và truyền tệp.
-w ftp -w chỉ định thời gian chờ (timeout) tính bằng giây cho các thao tác kết nối và truyền dữ liệu.

xem thêm: Networking and Communication

Cách sử dụng lệnh ftp trong các tình huống thực tế?

Dưới đây là các kịch bản sử dụng ftp thường gặp trong quản trị hệ thống và truyền tải dữ liệu qua mạng.

ftp là gì? [Kết nối tới máy chủ mặc định]

ftp 192.168.1.10
Connected to 192.168.1.10.
Name: 

Lệnh khởi tạo một phiên kết nối tới địa chỉ IP của máy chủ. Trong thực tế, đây là bước đầu tiên để kiểm tra khả năng thông suốt của giao thức FTP giữa hai thiết bị.

ftp -n là gì? [Truyền file không ở chế độ tương tác]

ftp -n 192.168.1.10
Connected to 192.168.1.10.
Name: 

Tham số -n ngăn chặn việc tự động gửi lệnh login khi vừa kết nối. Trên môi trường production, tùy chọn này giúp các kỹ sư kiểm soát quy trình xác thực thủ công hoặc chuẩn bị cho việc gửi lệnh qua script.

ftp kết hợp lệnh put là gì? [Tải file từ máy cục bộ lên server]

ftp> user admin
331 Password required for admin.
admin
Password:
ftp> put backup.tar.gz
226 Transfer complete.

Lệnh put cho phép đẩy một tệp tin từ máy client lên thư mục làm việc trên server. Trong thực tế, sysadmin thường dùng lệnh này để backup các file cấu hình hoặc log lên một máy chủ lưu trữ tập trung.

ftp kết hợp lệnh get là gì? [Tải file từ server về máy cục bộ]

ftp> get database_dump.sql
226 Transfer complete.

Lệnh get thực hiện tải tệp tin từ máy chủ về máy hiện tại. Đây là thao tác phổ biến khi cần thu thập dữ liệu hoặc lấy các bản build từ máy chủ staging về môi trường local để kiểm tra.

ftp kết hợp lệnh mget là gì? [Tải nhiều tệp tin cùng lúc]

ftp> mget *.log
Prompting for filename (*.log):
226 Transfer complete.

Lệnh mget cho phép tải hàng loạt tệp tin có cùng định dạng hoặc quy tắc đặt tên. Trong các kịch bản tự động hóa, việc sử dụng wildcard (*) giúp tiết kiệm thời gian thay vì phải tải từng tệp đơn lẻ.

Tại sao không thể kết nối hoặc đăng nhập vào máy chủ FTP?

Dưới đây là các tình huống lỗi thực tế thường gặp khi sử dụng lệnh ftp trong quá trình quản trị hệ thống.

Lỗi không thể kết nối tới máy chủ (Connection refused)

ftp 192.168.1.10
ftp: connect to address 192.168.1.10 port 21: Connection refused

Lỗi này xảy ra khi dịch vụ FTP chưa được khởi chạy trên máy chủ đích hoặc cổng 21 đang bị chặn bởi tường lửa.

Lỗi sai thông tin đăng nhập (Login incorrect)

ftp 192.168.1.10
Name: admin
Password: password123
Login incorrect.

Kết quả này xuất hiện khi tên người dùng hoặc mật khẩu không khớp với tài khoản được cấu hình trên máy chủ FTP.

Lỗi không thể liệt kê thư mục (Failed to retrieve directory listing)

ftp> ls
ftp: ls: Failed to retrieve directory listing.

Tình huống này thường do xung đột giữa chế độ Active Mode và Passive Mode khi đi qua tường lửa hoặc thiết bị NAT.

Lỗi hết thời gian chờ kết nối (Connection timed out)

ftp 203.0.113.5
ftp: connect to address 203.0.113.5 port 21: Connection timed out

Lỗi này cho thấy máy khách không thể nhận được phản hồi từ máy chủ, thường do địa chỉ IP không tồn tại hoặc gói tin bị chặn hoàn toàn bởi các lớp bảo mật mạng.

Quy trình thực tế sử dụng ftp trong quản trị hệ thống Linux?

Trong kịch bản triển khai ứng dụng web, ftp thường được sử dụng như một bước trong quy trình truyền tải mã nguồn hoặc các tệp cấu hình từ máy cục bộ lên máy chủ lưu trữ.

Bước 1: Kết nối tới máy chủ từ xa

ftp 192.168.1.100
Connected to 192.168.1.100.
Name: admin
Password: 
230 Login successful.

Người dùng thực hiện thiết lập kết nối tới địa chỉ IP của máy chủ và xác thực bằng tài khoản được cấp phép.

Bước 2: Kiểm tra danh sách tệp tin hiện có

ftp> ls -l
total 12
drwxr-xr-x    2 root     root         4096 Oct 25 10:00 public_html
-rw-r--r--    1 root     root          512 Oct 25 10:05 index.html

Lệnh ls cho phép bạn kiểm tra các thư mục và tệp tin đang tồn tại trên máy chủ để xác định vị trí cần tải lên.

Bước 3: Tải tệp tin lên máy chủ

ftp> put index.html
Storing file index.html
Transfer complete.
226 Transfer complete.

Sau khi xác định đúng vị trí, lệnh put cho phép bạn chuyển tệp tin từ máy cục bộ lên máy chủ đích.

Bước 4: Ngắt kết nối phiên làm việc

ftp> bye
Logout
Connection closed.

Sau khi hoàn tất việc truyền tải dữ liệu, lệnh bye được sử dụng để đóng phiên làm việc và giải phóng tài nguyên kết nối.

Khi quản trị VPS, việc sử dụng lệnh ftp đòi hỏi sự lưu ý về tính bảo mật và cấu hình môi trường. Giao thức FTP truyền dữ liệu dưới dạng văn bản thuần túy (plain text), dẫn đến rủi ro lộ thông tin đăng nhập khi thực hiện kết nối trên các mạng công cộng. Trong các trường hợp cần bảo mật cao trên VPS, quản trị viên nên ưu tiên sử dụng SFTP hoặc FTPS thay thế. Một vấn đề phổ biến phát sinh khi cấu hình FTP trên VPS là lỗi chế độ truyền dữ liệu (Transfer Mode). Chế độ Active thường bị chặn bởi tường lửa (firewall), gây ra tình trạng kết nối thành công nhưng không thể liệt kê danh sách thư mục (ls) hoặc tải tệp tin. Để khắc phục, việc chuyển sang chế độ Passive (PASV) là giải pháp tiêu chuẩn. Ví dụ, sau khi đăng nhập, lệnh pasv được thực hiện để thiết lập kênh dữ liệu qua cổng được chỉ định.

Những câu hỏi thường gặp về lệnh ftp?

Dưới đây là tổng hợp các tình huống và thắc mắc phổ biến nhất khi người dùng bắt đầu sử dụng giao thức truyền tải tệp tin qua dòng lệnh.

Làm thế nào để kết nối với một máy chủ FTP từ xa?

Bạn sử dụng lệnh ftp kèm theo địa chỉ IP hoặc tên miền của máy chủ để bắt đầu phiên làm việc.

ftp ftp.example.com
Connected to ftp.example.com.
Name:

Cách tải một tệp tin từ máy chủ về máy cục bộ?

Sử dụng lệnh get để tải một tệp tin cụ thể từ máy chủ về thư mục hiện hành trên máy tính của bạn.

ftp> get remote_file.txt
Remote file transferred.

Làm thế nào để tải toàn bộ thư mục từ máy chủ về máy cục bộ?

Bạn cần sử dụng lệnh mget (multiple get) kết hợp với tham số bật chế độ tương tác để tải nhiều tệp tin cùng lúc.

ftp> mget *.pdf
Multiple files requested. Aborting

Cách đẩy một tệp tin từ máy cục bộ lên máy chủ FTP?

Sử dụng lệnh put để gửi một tệp tin từ máy tính của bạn lên thư mục đích trên máy chủ.

ftp> put local_file.txt
Transfer complete.

Làm sao để xem danh sách các tệp tin đang có trên máy chủ?

Lệnh ls cho phép bạn liệt kê danh sách các tệp và thư mục đang tồn tại trên máy chủ FTP.

ftp> ls
2 files
-rw-r--r--    1 user     group          1024 Jan 01 10:00 file1.txt
-rw-r--r--    1 user     group          2048 Jan 01 11:00 file2.txt

Cách chuyển đổi giữa chế độ Active và Passive mode?

Trong một số trường hợp tường lửa ngăn chặn kết nối, bạn có thể sử dụng lệnh passive để thay đổi chế độ truyền dữ liệu.

ftp> passive
Passive mode on.

Làm thế nào để thoát khỏi phiên làm việc FTP?

Sử dụng lệnh quit hoặc bye để đóng kết nối với máy chủ và quay trở lại dòng lệnh hệ thống.

ftp> quit
Disconnected.

Lệnh ftp là một giao thức tiêu chuẩn giúp bạn thực hiện việc truyền tải tệp tin giữa máy tính cá nhân và máy chủ từ xa một cách nhanh chóng. Việc kết hợp tham số -n để ngăn chặn tự động đăng nhập hoặc sử dụng chế độ passive mode có thể giúp bạn kiểm soát kết nối ổn định hơn trong các môi trường mạng phức tạp, đúng không nhỉ? Tất nhiên, việc nắm vững các tùy chọn này sẽ giúp quá trình quản lý dữ liệu của bạn trở nên vô cùng hiệu quả và chuyên nghiệp. Hy vọng những chia sẻ trên sẽ hỗ trợ đắc lực cho công việc của bạn. Chúc bạn thành công!