Lệnh cp (copy) trong Linux dùng để sao chép file hoặc thư mục. Đây là một trong những lệnh cơ bản nhưng có nhiều tùy chọn quan trọng cần hiểu rõ khi làm việc trên server.
1. Cú pháp cơ bản
cp [options] source destinationsource: file/thư mục nguồndestination: đích đến
2. Các trường hợp sử dụng chính
2.1. Copy file
cp file1.txt file2.txt
→ Tạo bản sao file1.txt thành file2.txt
2.2. Copy vào thư mục
cp file1.txt /home/user/
→ Copy file vào thư mục
2.3. Copy nhiều file
cp file1.txt file2.txt /home/user/
2.4. Copy thư mục (quan trọng)
cp -r folder1 folder2
-r(recursive): bắt buộc khi copy thư mục
3. Các option quan trọng
3.1. -r (recursive)
Copy toàn bộ thư mục và nội dung bên trong
cp -r dir1 dir2
3.2. -a (archive) – rất quan trọng khi làm server
cp -a source dest
Giữ nguyên:
- quyền (permissions)
- owner/group
- timestamp
- symbolic links
👉 Dùng khi:
- backup
- clone website Drupal
- copy config hệ thống
3.3. -v (verbose)
cp -v file1 file2
→ Hiển thị chi tiết file đang copy
3.4. -i (interactive)
cp -i file1 file2
→ Hỏi trước khi ghi đè
3.5. -u (update)
cp -u file1 file2
→ Chỉ copy nếu file nguồn mới hơn
3.6. -p (preserve)
cp -p file1 file2
→ Giữ:
- quyền
- owner
- timestamp
3.7. --parents
cp --parents a/b/file.txt /tmp/
→ Giữ nguyên cấu trúc thư mục
3.8. -f (force)
cp -f file1 file2
→ Ghi đè không hỏi
4. Các tình huống thực tế (quan trọng với bạn)
4.1. Clone Drupal site (rất hay dùng)
cp -a sites/icu sites/plan
👉 Đây chính là bước bạn đang dùng trong script multisite
4.2. Backup nhanh
cp -a /var/www/html /backup/html_$(date +%F)
4.3. Copy nhưng tránh ghi đè
cp -n file1 /backup/
4.4. Copy kèm hiển thị log
cp -av source/ dest/
5. Phân biệt cp vs rsync (rất quan trọng)
| Tiêu chí | cp | rsync |
|---|---|---|
| Copy đơn giản | ✅ | ✅ |
| Đồng bộ thông minh | ❌ | ✅ |
| Resume khi lỗi | ❌ | ✅ |
| Copy qua mạng | ❌ | ✅ |
| Tối ưu server lớn | ❌ | ✅ |
👉 Kết luận:
cp: dùng nhanh, localrsync: dùng production, backup, sync
6. Lưu ý quan trọng (hay gặp lỗi)
6.1. Quên -r khi copy thư mục
cp folder1 folder2
→ ❌ lỗi
6.2. Ghi đè không kiểm soát
cp file1 /etc/config
→ có thể phá hệ thống
6.3. Không giữ quyền
cp -r vs cp -a
👉 Sai lầm phổ biến:
cp -r→ mất quyềncp -a→ đúng chuẩn server
7. Best practice (khuyến nghị cho bạn)
Với hệ thống bạn đang làm (Drupal + multisite + server):
Luôn ưu tiên:
cp -av source dest
Hoặc:
cp -a source dest
8. Tổng kết
cp= công cụ copy cơ bản, nhanh, mạnh- Option quan trọng nhất:
-r→ thư mục-a→ production-v→ debug
- Trong hệ thống server:
- dùng
cp -acho an toàn dữ liệu - dùng
rsynckhi cần đồng bộ nâng cao
- dùng
- Đăng nhập để gửi ý kiến