Đang tải bài học…
Nội dung sẽ hiển thị khi tải xong.
Nội dung sẽ hiển thị khi tải xong.
Thực hiện trên server của bạn, rồi kiểm tra từng tiêu chí.
Đưa file cấu hình lên server, sao lưu thư mục sang máy khác, đồng bộ bản build: những việc này lặp lại hằng ngày. scp copy nhanh từng file. rsync chỉ gửi phần thay đổi, giữ quyền và owner, xóa file thừa, nên được dùng cho backup và deploy đơn giản.
scp với SSH key.rsync -a, hiểu ý nghĩa dấu / cuối đường dẫn nguồn.--dry-run để xem trước và --delete để xóa file thừa một cách có kiểm soát.~/.ssh/kdc_lab trên máy của bạn.scp và rsync đều chạy qua SSH, nên dùng chung xác thực, key và firewall với SSH.
rsync -a (archive) giữ quyền, thời gian sửa, symlink, và owner nếu chạy bằng root. rsync so sánh kích thước và thời gian sửa để bỏ qua file không đổi.
Dấu / cuối nguồn rất quan trọng:
| Lệnh | Kết quả |
|---|---|
rsync -a site/ dest/ | Copy nội dung của site vào dest |
rsync -a site dest/ | Tạo dest/site/ |
--delete xóa ở đích những file không còn ở nguồn. Sai đường dẫn cùng --delete có thể xóa sạch đích, vì vậy luôn chạy --dry-run trước.
Trên VM, tạo thư mục mà tài khoản quản trị của bạn ghi được:
sudo install -d -o "$USER" -g "$USER" -m 755 /srv/kdc-transfer
"$USER" được shell VM thay bằng tên tài khoản đang dùng; nháy kép giữ kết quả thành một đối số. install -o ... -g ... cấp thư mục cho user/group đó; -m 755 cho owner ghi và mọi người đọc/truy cập.
Trên máy của bạn:
echo "Gửi từ laptop lúc $(date)" > from-laptop.txt
scp -i ~/.ssh/kdc_lab from-laptop.txt <user>@<ip-của-vm>:/srv/kdc-transfer/
scp -i ~/.ssh/kdc_lab <user>@<ip-của-vm>:/etc/os-release ./vm-os-release.txt
scp -i ~/.ssh/kdc_lab dùng private key này khi copy qua SSH. Cú pháp là scp [tùy-chọn] <nguồn> <đích>: nguồn local → đích có user@host: là upload; nguồn có user@host: → đích local là download. ./vm-os-release.txt là file trong thư mục hiện tại trên laptop. $(date) chèn thời điểm hiện tại vào file mẫu.
Trong user@host:/đường/dẫn, dấu : phân cách máy từ xa với đường dẫn trên máy đó; đường dẫn không có user@host: là trên máy bạn đang chạy lệnh. scp chỉ copy file, không tự chạy file hay liên kết agent.
Lệnh thứ hai copy theo chiều ngược lại, từ server về máy của bạn.
Trên VM:
mkdir -p /srv/kdc-transfer/site
echo '<h1>Trang chủ</h1>' > /srv/kdc-transfer/site/index.html
echo '<h1>Trang cũ</h1>' > /srv/kdc-transfer/site/old.html
echo 'token=demo' > /srv/kdc-transfer/site/secret.conf
chmod 640 /srv/kdc-transfer/site/secret.conf
ls -l /srv/kdc-transfer/site
chmod 640 cho owner đọc/ghi (6), group chỉ đọc (4), other không có quyền (0). Không áp dụng quyền file này cho thư mục cần đi vào.
sudo dnf install -y rsync
sudo install -d /srv/kdc-mirror/site
sudo rsync -av --dry-run /srv/kdc-transfer/site/ /srv/kdc-mirror/site/
sudo rsync -av /srv/kdc-transfer/site/ /srv/kdc-mirror/site/
ls -l /srv/kdc-mirror/site
rsync -av gộp -a (archive: giữ symlink, quyền, thời gian, owner/group khi được phép, và đồng bộ đệ quy) với -v (in việc đang làm). --dry-run chỉ xem trước, chưa copy/xóa. Hai đối số cuối là nguồn và đích; dấu / cuối nguồn nghĩa là đồng bộ nội dung bên trong nguồn. Bỏ --dry-run mới thực hiện thật.
--dry-run liệt kê việc sẽ làm mà không thay đổi gì. So sánh quyền của secret.conf ở hai nơi.
echo '<h1>Trang mới</h1>' > /srv/kdc-transfer/site/new.html
rm /srv/kdc-transfer/site/old.html
sudo rsync -av /srv/kdc-transfer/site/ /srv/kdc-mirror/site/
ls /srv/kdc-mirror/site
rsync -av gộp chế độ archive (-a, đồng bộ đệ quy và giữ metadata khi được phép) và in chi tiết (-v). Lệnh không có --delete, nên file dư ở đích vẫn còn dù đã xóa ở nguồn.
new.html đã được copy, nhưng old.html vẫn còn ở mirror. Xem trước rồi đồng bộ với --delete:
sudo rsync -av --delete --dry-run /srv/kdc-transfer/site/ /srv/kdc-mirror/site/
sudo rsync -av --delete /srv/kdc-transfer/site/ /srv/kdc-mirror/site/
--delete xóa file dư ở đích khi file tương ứng không còn ở nguồn. --dry-run chỉ hiển thị việc sẽ làm, chưa thay đổi file; bỏ tùy chọn này để thực hiện. -av giữ chế độ archive và in chi tiết; dấu / cuối nguồn chọn nội dung bên trong thư mục.
Từ máy của bạn, cùng cú pháp có thể đồng bộ qua mạng:
rsync -av -e "ssh -i ~/.ssh/kdc_lab" ./my-folder/ <user>@<ip-của-vm>:/srv/kdc-transfer/my-folder/
rsync -e "ssh -i ~/.ssh/kdc_lab" chọn lệnh kết nối tới máy đích. -e nhận cả chuỗi lệnh SSH nhờ dấu nháy kép. --delete ở bước trước chỉ xóa file dư ở đích; luôn đọc kết quả --dry-run trước khi chạy thật.
ls -l /srv/kdc-transfer /srv/kdc-mirror/site
ls -l <thư-mục> liệt kê chi tiết các file bên trong để đối chiếu quyền và nội dung đã đồng bộ.
Chọn server và bấm Kiểm tra kết quả.
/ cuối nguồn: dữ liệu nằm ở /srv/kdc-mirror/site/site/.scp báo Permission denied khi ghi: tài khoản đích không có quyền ghi thư mục, không phải lỗi SSH.rsync không giữ owner khi không chạy bằng root ở đích.--delete tiếp theo. Backup thật cần nhiều phiên bản (snapshot, --link-dest, hoặc công cụ backup chuyên dụng).scp hiện dùng giao thức SFTP bên dưới. Với nhiều file hoặc file lớn, rsync hiệu quả hơn vì chỉ gửi phần thay đổi và tiếp tục được khi bị ngắt.sudo rm -rf /srv/kdc-transfer /srv/kdc-mirror
rm -f xóa file và không hỏi xác nhận; -r thêm xóa đệ quy thư mục cùng nội dung, nên -rf gộp hai tùy chọn này.