FTP protocol: Một giao thức khá phổ biến [trước năm 2010], được nhiều lập trình viên ưa thích sử dụng cho việc lưu trữ file để chia sẻ giữa các hệ thống.: Một giao thức khá phổ biến [trước năm 2010], được nhiều lập trình viên ưa thích sử dụng cho việc lưu trữ file để chia sẻ giữa các hệ thống.: Một giao thức khá phổ biến [trước năm 2010], được nhiều lập trình viên ưa thích sử dụng cho việc lưu trữ file để chia sẻ giữa các hệ thống.
Nội dung chính
- Dựng một ftp server
- Xây dựng FTP-CLIENT bằng thư viện ftplib
- Khởi tạo kết nối
- Xem thông số của ftp-server
- Các câu lệnh liên quan đến thư mục/file.
- Hiển thị thư mục hiện tại
- Liệt kê các thư mục/file trong thư mục kết nối đến
- Di chuyển đến thư mục khác từ thư mục cha:
- Di chuyển về thư mục trước đó.
- Tạo thư mục mới
- Xóa thư mục
- Lệnh liên quan đến file.
- Kiểm tra dung lượng file
- Upload file.
- Download file
- Đóng kết nối.
Hiện tại có vẻ như đã lỗi thời nhưng đâu đó vẫn còn những thế thống "già" vẫn sử dụng và "biết đâu bất ngờ", một ngày nào đó chúng ta sẽ phải làm việc với nó.
Tôi đã từng gặp một case như vậy, hệ thống của khách hàng là Windows Server, phương án share file hiện tại của họ là sử dụng FTP Server.
Nhiệm vụ của tôi là truy nhập vào server của khách hàng, di chuyển đến đúng thư mục mà họ đã chỉ định từ trước, tìm kiếm xem có file nào mới được tạo [do khách hàng đẩy vào], download file đó về. Tiến hành xử lý sau đó lại truy nhập vào ftp server và upload file sau xử lý lên một thư mục mà họ chỉ định sẵn, đôi khi cần tạo mới một thư mục để thực hiện.
Tôi đã giải quyết bài toán trên bằng cách sử dụng thư viện ftplib của python. Mời các bạn xem listing code từng phần của tôi dưới đây.
Dựng một ftp server
Để tiếp tục với bài viết, nếu các bạn muốn thực hiện demo theo code của tôi, các bạn có thể tự khởi tạo cho mình một ftp-server theo các hướng dẫn.
Để xây dựng một FTP Server, trên Windows rất dễ, sử dụng FileZilla Server: //quantrimang.com/huong-dan-thiet-lap-ftp-server-ca-nhan-bang-filezilla-84531
Với Ubuntu, cần thực hiện theo hướng dẫn [nhớ chọn Authenticated]: //ubuntu.com/server/docs/service-ftp
Đặc điểm FTP Server: FTP Server: FTP Server:
- Lưu trữ file
- Quản lý user/password
- Phân quyền truy nhập
- Cung cấp kết nối qua một cổng bất kỳ [default: 21]:
- Kết nối nặc danh.
- Kết nối định danh: user/password.
FTP Client:
- Chương trình trên máy người dùng, sử dụng để kết nối đến FTP Server
Xây dựng FTP-CLIENT bằng thư viện ftplib
Trong Python, muốn kết nối FTP, sử dụng thư viện ftplib, đây là thư viện mặc định trong hệ thống [có sau khi cài đặt python] nên không cần cài thêm.
Khởi tạo kết nối
from ftplib import FTP
ftp_ip = "your-host-ip"
ftp_usr = "your-username"
ftp_pwd = "your-password"
ftp_client = FTP[ftp_ip]
ftp_client.login[user=ftp_usr, passwd = ftp_pwd]
Xem thông số của ftp-server
Các câu lệnh liên quan đến thư mục/file.
Xem thông số của ftp-server
ftp_client.welcome
Các câu lệnh liên quan đến thư mục/file.
Các câu lệnh liên quan đến thư mục/file.
Hiển thị thư mục hiện tại
ftp_client.pwd[]
Liệt kê các thư mục/file trong thư mục kết nối đến
Di chuyển đến thư mục khác từ thư mục cha:
Liệt kê các thư mục/file trong thư mục kết nối đến
print[ftp_client.retrlines['LIST']]
-rw-r--r-- 1 ftp ftp 11234 May 09 21:39 Doc1.docx drwxr-xr-x 1 ftp ftp 0 May 09 23:21 Folder1 drwxr-xr-x 1 ftp ftp 0 May 09 21:26 Folder2 -rw-r--r-- 1 ftp ftp 1085 May 09 21:49 sample.ipynb 226 Successfully transferred "/"
Di chuyển đến thư mục khác từ thư mục cha:
ftp_client.cwd["Folder1"]
'250 CWD successful. "/Folder1" is current directory.'
Di chuyển về thư mục trước đó.
Di chuyển về thư mục trước đó.
ftp_client.cwd[".."]
Tạo thư mục mới
Tạo thư mục mới
ftp_client.mkd["NewFolder"]
'/NewFolder'
Xóa thư mục
ftp_client.welcome
01ftp_client.welcome
Lệnh liên quan đến file.
Kiểm tra dung lượng file
ftp_client.welcome
23ftp_client.welcome
Upload file.
Download file
ftp_client.welcome
45ftp_client.welcome
Upload file.
- Download file
- Đóng kết nối.
ftp_client.welcome
67ftp_client.welcome
Download file
- Đóng kết nối.
- Hiện tại có vẻ như đã lỗi thời nhưng đâu đó vẫn còn những thế thống "già" vẫn sử dụng và "biết đâu bất ngờ", một ngày nào đó chúng ta sẽ phải làm việc với nó.
ftp_client.welcome
89ftp_client.welcome
Đóng kết nối.
Hiện tại có vẻ như đã lỗi thời nhưng đâu đó vẫn còn những thế thống "già" vẫn sử dụng và "biết đâu bất ngờ", một ngày nào đó chúng ta sẽ phải làm việc với nó.
ftp_client.pwd[]
0Tôi đã từng gặp một case như vậy, hệ thống của khách hàng là Windows Server, phương án share file hiện tại của họ là sử dụng FTP Server.
Nhiệm vụ của tôi là truy nhập vào server của khách hàng, di chuyển đến đúng thư mục mà họ đã chỉ định từ trước, tìm kiếm xem có file nào mới được tạo [do khách hàng đẩy vào], download file đó về. Tiến hành xử lý sau đó lại truy nhập vào ftp server và upload file sau xử lý lên một thư mục mà họ chỉ định sẵn, đôi khi cần tạo mới một thư mục để thực hiện.