Tại sao nên sử dụng?

Như các bạn biết đối với 1 dev thì việc sử dụng dữ liệu thông qua cloud là điều rất thường xuyên, bình thường các bạn có thể sủ dụng Icloud, Dropbox, Google Driver .... để lưu trữ. Nhưng để có được dung lượng lớn thì bắt buộc phải trả tiền hàng duy trì cho tài khoản, tuy chi phí không cao nhưng nếu chúng ta biết tận dụng nguồn máy chủ hiện có trong tay thì chúng ta hoàn toàn có thể tận dụng chúng để tạo ra 1 mạng chia sẻ để sử dụng tương tự như các dịch vụ trả tiền trên bằng 1 cách rất đơn giản chỉ với vài dòng lệnh.

Cài đặt

Trong bài này mình sẽ hướng dẫn chia sẻ 1 thư mục thông qua CLI bằng Samba.
Yêu cầu:
Trước khi bắt đầu, bạn cần có 1 máy chủ riêng hoặc 1 vps cài sẵn ubuntu.
Chạy lệnh sau để cài đặt Samba:

sudo apt-get update
sudo apt-get install samba

Tạo mật khẩu cho user trong Samba

sudo smbpasswd -a <user_name>

user_nameuser_name hệ thống và mật khẩu ở đây là mật khẩu riêng biệt dùng để truy cập thông qua Samba và hoàn toàn không liên quan gì đến mật khẩu login vào hệ thống của user_name đó.

Lưu ý: Bạn phải thiết lập quyền cho user có quyền ghi và đọc cho thư mục mà bạn muốn chia sẻ:
ví dụ:

sudo chown <user_name> /var/opt/blah/blahblah
sudo chown :<user_name> /var/opt/blah/blahblah

Tạo thư mục muốn chia sẻ

mkdir /home/<user_name>/<folder_name>

Bạn nên tạo 1 bản backup file smb.conf vào thư mục home để phòng trường hợp cấu hình lỗi:

sudo cp /etc/samba/smb.conf ~

Chỉnh sửa file smb.conf

sudo nano /etc/samba/smb.conf

Khi màn hình editor hiện lên bạn hãy thêm vào cuối file các dòng lệnh sau:

[<folder_name>]
path = /home/<user_name>/<folder_name>
valid users = <user_name>
read only = no
follow symlinks = yes
wide links = yes

Tìm dòng [global] và thêm lệnh sau:

[global]
unix extensions = no

Khởi động lại Samba

sudo service smbd restart

Khi Samba đã được khởi động, để kiểm tra cấu hình samba có bị lỗi không chạy lệnh sau:

testparm

Truy cập vào thư mục chia sẻ

sudo apt-get install smbclient
# List all shares:
smbclient -L //<HOST_IP_OR_NAME>/<folder_name> -U <user>
# connect:
smbclient //<HOST_IP_OR_NAME>/<folder_name> -U <user>

Để truy cập vào thự mục bạn cần sử dụng username và mật khẩu thông qua path
smb://<HOST_IP_OR_NAME>/<folder_name>/ (Linux users) hoặc \\<HOST_IP_OR_NAME>\<folder_name>\ (Windows users).
Lưu ý:
<folder_name> là giá trị của [<folder_name>] mà bạn đã khai báo tại /etc/samba/smb.conf

Ngoài ra mình có viết 1 script để các bạn sync đơn giản chỉ bằng 1 dòng lệnh
Các bạn có thể tham khảo tại đây.