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

Môi trường thử nghiệmHọ RHELAlmaLinux 9.8Tài khoản rootKiểm tra ngày 2026-10-05

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.

Lệnh cp
# 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ọnMô 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]
-bNếu tệp đích đã tồn tại, sao lưu tệp cũ rồi mới sao chép
-dNếu nguồn là liên kết tượng trưng, sao chép chính liên kết đó
-fNế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
-PSao chép nguyên liên kết tượng trưng mà không đi theo nó
-pGiữ nguyên chủ sở hữu, nhóm, quyền và thông tin thời gian của bản gốc
-r, -RSao 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ị.
-sSao 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)
-uKhông ghi đè nếu tệp đích mới hơn hoặc giống nhau
-vIn 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
-xKhông sao chép nếu hệ thống tệp của nguồn và đích khác nhau.
Trình mô phỏng lệnh cpalias cp='cp -i'
[root@server work]#
Chỉ chạy trong trình duyệt và không đụng đến tệp thật. Hãy thử gõ cp với các tùy chọn khác nhau rồi kiểm tra kết quả bằng ls, cat và diff. Phím ↑↓ trên bàn phím gọi lại lệnh đã gõ trước đó, và gõ uknew help sẽ hiện các lệnh dùng được.

🔲 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ồmMô tả
modeQuyền của tệp (rwx, v.v.)
ownershipChủ sở hữu (user) và nhóm (group)
timestampsDấu thời gian như thời điểm sửa đổi cuối
linksSố liên kết cứng (giữ việc dùng chung inode)
contextNgữ cảnh bảo mật SELinux
xattrThuộc tính mở rộng (siêu dữ liệu lưu kèm theo tệp)
allDạ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
Linux

ℹ️ 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á.