SCP (Secure Copy) và SFTP (Secure File Transfer Program) là các lựa chọn thay thế cho FTP (File Transfer Program), rất hữu ích cho việc truyền tệp không theo lịch trình. Cả ba đều có thể giúp thực hiện di chuyển tệp từ vị trí này sang vị trí khác qua phương tiện mạng. Tuy nhiên, FTP gửi dữ liệu dạng văn bản thuần túy, trong khi hai dịch vụ còn lại sử dụng SSH File Transfer Protocol (SFTP) để liên lạc.
SCP là gì?
SCP là một chương trình truyền tệp không tương tác xuất hiện lần đầu tiên trong 4.2 BSD. Trong lịch sử, nó sử dụng rlogin và SSH để truyền tệp giữa hai máy tính. Điều này khiến nó dễ bị khai thác từ xa vì nó chạy các lệnh trên máy chủ từ xa để bắt đầu truyền dữ liệu.
Việc truyền tệp và thư mục trong SCP có thể được thực hiện giữa một máy cục bộ và một máy chủ từ xa hoặc hai máy chủ từ xa. Điều này cho phép nó linh hoạt hơn khi làm việc với các bản phân phối giống UNIX khác nhau.
SCP cũng có thể được sử dụng với ký tự đại diện để hỗ trợ truyền nhiều tệp dựa trên tiêu chí một phần chuỗi. Tương tự như chuyển trực tiếp, các ký tự đại diện này cũng có thể được sử dụng để gửi và nhận các tệp và thư mục.
SFTP là gì?
Không giống như SCP, SFTP là một chương trình truyền tệp hoạt động tương tự như lời nhắc FTP và trình bao từ xa. Nó cung cấp lời nhắc tương tác cho phép bạn điều hướng hệ thống tệp của máy chủ từ xa và thao tác nội dung của nó.
SFTP cũng sử dụng một số tính năng SSH, chẳng hạn như nén hoặc xác thực khóa chung, để kết nối với máy chủ và vào chế độ tương tác. Điều này làm cho nó trở thành một trình duyệt hệ thống tập tin từ xa mạnh mẽ dành cho các máy UNIX không đầu.
SFTP cũng có thể được sử dụng để tự động truy xuất tệp nếu bạn sử dụng phương pháp xác thực không tương tác, mặt khác, nó sẽ truy xuất chúng sau khi xác thực tương tác thành công.
Lưu ý: SFTP không phải là FTP qua SSH mà là một giao thức hoàn toàn mới.
SCP và SFTP cái nào tốt hơn?
Có một số điểm tương đồng giữa hai chương trình truyền tệp. Cả hai đều sử dụng cổng TCP 22 và chạy trên SSH nên chúng ngang nhau về mặt bảo mật. Ngoài ra, cả hai chương trình cũng hỗ trợ chuyển các tệp lớn vì chúng không có giới hạn kích thước tệp. Do đó, sự khác biệt chính giữa SCP và SFTP có thể thấy ở thông số kỹ thuật và chức năng của chúng.
1. Chức năng
Về cốt lõi, mục đích cơ bản của SCP là sao chép dữ liệu một cách an toàn giữa hai máy. Điều này thể hiện rõ trong cú pháp cơ bản của chương trình yêu cầu bạn cung cấp nguồn và đích cho mỗi lần truyền tệp. Điều này giúp việc chuyển tệp tin một lần đơn giản trở nên dễ dàng hơn.
Trong khi đó, SFTP là ứng dụng truyền tệp hoàn chỉnh hơn, cung cấp trình duyệt tệp cùng với khả năng tải xuống nhiều tệp. Những tính năng này làm cho SFTP trở nên lý tưởng cho người dùng cần liên tục truyền tệp đến và từ máy chủ từ xa.
Nhìn chung, về mặt chức năng SFTP đã chiến thắng.
2. Tốc độ
Vì cả SCP và SFTP đều sử dụng giao thức SFTP để mã hóa và truyền tải tệp nên cả hai chương trình đều có chung tốc độ truyền thô khi gửi hoặc nhận dữ liệu. Tuy nhiên, bắt đầu vụ chuyển nhượng đó lại là một câu chuyện khác.
SCP thường nhanh hơn trong việc đạt được tốc độ truyền thô tối đa của một kết nối trong khi SFTP bị tụt lại phía sau khi nó cố gắng “tăng tốc” tốc độ của mình.
Hơn nữa, việc bắt đầu truyền SFTP cũng yêu cầu bạn phải truy cập lời nhắc và sử dụng các lệnh FTP để tải lên và tải xuống tệp.
Đối với tốc độ có vẻ như SCP có lợi thế hơn.
3. Bảo mật
Cả SCP và SFTP đều dựa vào giao thức SSH cho lớp vận chuyển cơ sở của chúng. Điều này cho phép họ truyền dữ liệu một cách an toàn qua mạng bằng mã hóa cấp quân sự.
Mặc dù vậy, SFTP vượt trội hơn SCP bằng cách cung cấp cờ -f cho phép bạn ghi ngay lập tức mọi dữ liệu được truyền vào đĩa. Không chỉ vậy, giao diện dòng lệnh của nó còn cung cấp một số tiện ích cho phép bạn cập nhật các bit quyền của tệp.
SFTP chiến thắng trong phần an toàn bảo mật.
4. Kích thước tệp tin
Hầu hết các phiên bản hiện địa của cả SCP và SFTP trong Linux đều là nhị phân 64bit. Điều này có nghĩa là cả 2 tiện ích theo giả thuyết có thể hỗ trợ tối đa 16 Exabyte dữ liệu tùy ý miễn là hệ thống cơ bản cũng hỗ trợ nó.
Điều đó nói lên rằng, SCP vẫn có thể gây ra một số vấn đề với các tệp lớn, đặc biệt là khi làm việc với các máy giống UNIX cũ hơn. Điều này chủ yếu là do các hệ thống chạy trên phiên bản SCP 32 bit chỉ có thể xử lý các tệp có giá trị tối đa 4 Gigabyte cùng một lúc.
Người chiến thắng: SFTP
5. Dòng lệnh
SCP không tương tác và không thể đọc các tập lệnh, vì vậy mọi thứ phải được viết trên dòng lệnh. Tuy nhiên, điều này cũng cho phép nó chạy như một phần của các tập lệnh shell lớn hơn, có thể hữu ích khi tự động hóa các tác vụ quản trị hệ thống.
Mặt khác,SFTP cũng có tính tương tác nên nó có thể đọc lệnh từ các tệp. Mặc dù điều này cũng có thể hữu ích cho việc tự động hóa, nhưng nó có thể phức tạp hơn vì nó yêu cầu một tập lệnh khác với tập tin shell thông thường.
Người chiến thắng: SCP
6. Liên tục truyền tin
SCP hoàn toàn không hỗ trợ chức năng này. Điều này làm cho chương trình có xu hướng lặp lại toàn bộ quá trình truyền trên các kết nối không liên tục và không liên tục. Trong khi đó, SFTP hỗ trợ nó trên cả dấu nhắc CLI bằng -a của nó và thông qua ứng dụng khách dòng lệnh bằng cách sử dụng các lệnh phụ reget và reput.
Người chiến thằng: SFTP
Bạn nên sử dụng cái nào để truyền tệp SCP hoặc SFTP?
Mặc dù chính có những ưu điểm tương đồng và khác biệt nhưng việc nói cái này tốt hơn cái kia sẽ không công bằng. Cả hai điều truyền tệp và có tính năng bảo mật tương tự khi chạy trên SSH. Cuối cùng, tiện ích bạn chọn sẽ dựa trên những gì tốt nhất cho yêu cầu môi trường của bạn.
Sử dụng SCP cho
- Khi bạn muốn chuyển một tập tin hoặc thư mục giữa hai máy chủ từ xa.
- Khi bạn muốn tự động truyền dữ liệu qua mạng.
- Khi bạn đang làm việc với các hệ thống giống UNIX cũ không có hỗ trợ SFTP.
Sử dụng SFTP cho
- Khi bạn đang chuyển nhiều tệp tin trên nhiều thư mục từ một máy chủ từ xa.
- Khi bạn muốn tương tác với hệ thống tệp của máy chủ từ xa mà không cần mở phiên SSH mới.
- Khi bạn muốn một chương trình truyền tệp tin đáng tin cậy có thể hoạt động ngay cả trong điều kiện mạng không liên tục.
Cộng Đồng