Tùy chọn lệnh cp và ghi đè hàng loạt không cần xác nhận | 2 cách: yes và dấu gạch chéo ngược
cp sẽ hỏi có ghi đè từng tệp hay không khi sao chép nhiều tệp, khiến công việc bị dừng lại. Lệnh cp là viết tắt của Copy, dùng để sao chép tệp và thư mục; bài viết này tóm tắt cách dùng cơ bản, các tùy chọn và 2 cách ghi đè hàng loạt không cần xác nhận.
Lệnh cp ghi đè tệp cùng tên ở đích mà không hỏi. Để tránh điều đó, [alias cp='cp -i'] được thiết lập nên lệnh sẽ hỏi xác nhận trước khi ghi đè.
✅ Cách dùng cơ bản
Cách dùng cơ bản như sau.
cp -[tùy chọn] <nguồn: File hoặc thư mục> <đích: đường dẫn hoặc File hoặc thư mục (đường dẫn)>Ghi đối tượng cần sao chép trước, rồi ghi đích hoặc tên mới phía sau.

# Sao chép tệp > tệp
cp file1 file2
# Sao chép tệp > vào thư mục
cp file1 dir1/
# Sao chép 2 tệp > vào thư mục
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Sao chép thư mục cần dùng tùy chọn -r hoặc -R, hoặc tùy chọn -a.
- -r/-R : sao chép đệ quy thư mục và nội dung bên trong
- -a : sao chép đệ quy và giữ thuộc tính (đã bao gồm -r)
✅ 2 cách ghi đè hàng loạt với lệnh cp
Khi chạy lệnh cp sẽ có câu hỏi [overwrite], vì cp đã được đặt bí danh (alias) [cp -i].
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'Một hai tệp thì không sao, nhưng khi sao chép nhiều tệp thì phải trả lời cho từng tệp nên rất phiền.
Khi đó, có thể ghi đè không cần xác nhận bằng hai cách dưới đây.
yes | cp -ar /home/ ./Cách thứ nhất là đặt [yes |] ở phía trước, y sẽ được nhập tự động cho mỗi lần xác nhận và việc sao chép diễn ra luôn. Cách thứ hai là đặt dấu gạch chéo ngược [\] trước lệnh, khi đó lệnh cp gốc được chạy mà không đi qua bí danh.
\cp -ar /home/ ./✅ Tùy chọn lệnh cp & trình mô phỏng
| Tùy chọn | Mô tả | |
|---|---|---|
| -a | --archiveSao chép và giữ nguyên toàn bộ quyền, chủ sở hữu, nhóm, thông tin thời gian… của tệp gốc[giữ nguyên toàn bộ quyền, chủ sở hữu, nhóm, thông tin thời gian…] + [-d : sao chép chính liên kết tượng trưng] + [-R : sao chép đệ quy thư mục] | |
| -b | Nếu tệp đích đã tồn tại, sao lưu tệp cũ rồi mới sao chép | |
| -d | Nếu nguồn là liên kết tượng trưng, sao chép chính liên kết đó | |
| -f | Nếu có tệp đích, xóa bắt buộc rồi sao chép | |
| -i | --interactiveHỏi người dùng xác nhận trước khi ghi đèalias cp='cp -i' | |
| -l(chữ thường) | Sao chép dưới dạng liên kết cứng | |
| -P | Sao chép nguyên liên kết tượng trưng mà không đi theo nó | |
| -p | Giữ nguyên chủ sở hữu, nhóm, quyền và thông tin thời gian của bản gốc | |
| -r, -R | Sao chép đệ quy thư mục (bao gồm thư mục con và tệp)Tùy chọn -r không thuộc chuẩn POSIX và có thể gây lỗi khi xử lý liên kết tượng trưng hoặc tệp thiết bị. | |
| -s | Sao chép dưới dạng liên kết tượng trưng (nguồn phải ghi bằng đường dẫn tuyệt đối) | |
| -u | Không ghi đè nếu tệp đích mới hơn hoặc giống nhau | |
| -v | In tiến trình sao chép (verbose)Tùy chọn hiển thị thông báo rằng việc sao chép đã hoàn tất | |
| -x | Không sao chép nếu hệ thống tệp của nguồn và đích khác nhau. |
🔲 Tùy chọn -a: giữ thuộc tính của tệp gốc & sao chép thư mục con(&tệp)
Để sao chép cả thư mục con mà vẫn giữ thuộc tính của tệp gốc, chỉ tùy chọn [-a] là đủ. Tuy nhiên, có script hoặc công cụ tự động hóa yêu cầu rõ [-r], nên đôi khi [-r] hoặc [-R] cũng được dùng kèm.
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : sao chép chính liên kết tượng trưng]+[-R : sao chép đệ quy thư mục]+[--preserve=all]
| Các mục mà --preserve=all bao gồm | Mô tả |
|---|---|
| mode | Quyền của tệp (rwx, v.v.) |
| ownership | Chủ sở hữu (user) và nhóm (group) |
| timestamps | Dấu thời gian như thời điểm sửa đổi cuối |
| links | Số liên kết cứng (giữ việc dùng chung inode) |
| context | Ngữ cảnh bảo mật SELinux |
| xattr | Thuộc tính mở rộng (siêu dữ liệu lưu kèm theo tệp) |
| all | Dạng rút gọn bao gồm tất cả các mục trên cùng lúc |
🔲 Tùy chọn -u: chỉ sao chép tệp mới và tệp đã thay đổi
- Chỉ sao chép khi ở đường dẫn đích không có tệp cùng tên, hoặc khi bản gốc mới hơn
- Thường dùng khi sao lưu hoặc đồng bộ
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.