Khi cần chia sẻ file qua mạng nội bộ, tôi thường nghĩ đến việc chạy 1 web server hay FTP server, nhưng lại ngại cài những phần mềm chuyên dụng như Apache, ProFTP vì tôi chỉ muốn chạy server trong 1 khoảng thời gian ngắn, chỉ phục vụ tải file cho một thư mục nhất định và không muốn cấu hình username/password để login.
Chẳng hạn, nếu cài webserver chuyên dụng như Apache, Nginx thì thường thư mục gốc sẽ là /var/wwww/
, nếu muốn chia sẻ file từ 1 thư mục bất kì thì phải tạo symlink vô đây, và phải gõ password để lên sudo
. Nếu cài 1 FTP server chuyên dụng như ProFTP thì từ client truy cập vô, luôn đụng phải thư mục root và phải đăng nhập username, password.
Thật mừng là Python có những thư viện đáp ứng rất tốt nhu cầu. Chẳng hạn tôi muốn chia sẻ file từ thư mục /home/hongquan/Documents, tôi chỉ việc vào thư mục đó và chạy:
Trong đó http.server
là standard lib của Python nên không cần cài đặt gì thêm.
Nếu mở trình duyệt ở máy khác, ta sẽ thấy nội dụng thư mục được chia sẻ và có thể download dễ dàng (lưu ý port mặc định là 8000):
Nếu muốn tải cùng lúc nhiều file thì chạy FTP server tiện hơn. Python không có thư viện chuẩn cho FTP server, ta phải dùng thư viện ngoài là pyftpdlib
nhưng việc cài đặt thì quá đơn giản như các thư viện Python khác:
sudo pip3 install pyftpdlib
Sau đó ta chạy FTP server như sau (port mặc định là 2121):
python3 -m pyftpdlib
Mở FTP client từ máy khác, ta sẽ thấy ngay nội dung được chia sẻ mà không cần đăng nhập hay nhảy thư mục lôi thôi:
Thật tiện phải không?
HTTP, FTP là cách tôi thường dùng để chuyển dữ liệu qua lại giữa laptop, điện thoại và tablet của tôi. Một điều tuyệt vời nữa là điện thoại của tôi cũng hỗ trợ Python, Terminal như máy bàn nên tôi có thể chạy web server, FTP server y chang vậy từ điện thoại.