Copy file, thư mục hẳn là những tác vụ cơ bản nhất khi làm việc với command line. Để sử dụng thành thạo và nhanh hơn khi thao tác trên Linux, bài viết này Vietnix sẽ hướng dẫn các câu lệnh cơ phổ biến nhất để copy file và thư mục trong Linux dễ dàng.
Copy file trong Linux bằng lệnh cp
Để thực hiện được việc copy file và thư mục thì trước hết bạn luôn phải có quyền đọc trên file gốc, và quyền viết ở trên thư mục đích. Trên các hệ điều hành Unix và Linux, lệnh cp
được dùng để copy file và thư mục.
- Trường hợp đơn giản nhất là khi bạn cần copy một file trong thư mục đang làm việc. Chẳng hạn, bạn có một file tên file.txt và muốn copy thành file_backup.txt trong thư mục đang làm việc thì có thể dùng lệnh sau:
cp file.txt file_backup.txt
- Nếu file đích đã tồn tại thì nó sẽ bị ghi đè bởi lệnh
cp
. Để nhận thông báo yêu cầu xác định trước khi thực hiện ghi đè file thì bạn có thể thêm option-i
vào lệnh như sau:
cp -i jump.sh jump2.sh
- Theo mặc định thì file được tạo bởi lệnh
cp
sẽ có quyền sở hữu thuộc về người dùng đã thực thi lệnh. Nếu muốn giữ nguyên chế độ, quyền sở hữu và timestamp của file thì bạn có thể thêm option-p
vào lệnh:
cp -p file.txt file_backup.txt
- Lệnh
cp
còn có thêm một option phổ biến nữa là-v
, dùng để hiển thị tiến trình khi thực thi lệnh:
cp -v file.txt file_backup.txt
Output: ‘file.txt’ > ‘file_backup.txt’
Ngoài ra, bạn cũng có thể xem thêm một số bài viết khác về các câu lệnh trong Linux dưới đây:
Copy file vào một thư mục
Để copy file vào một thư mục, bạn cần chỉ định đường dẫn tương đối hoặc đường dẫn đầy đủ đến thư mục. Nếu không chỉ định đường dẫn cho thư mục gốc thì mặc định file sẽ được copy vào thư mục hiện tại.
- Ví dụ bạn cần copy file jump2.sh vào thư mục /Documents:
cp jump2.sh ~/Documents/
Nếu chỉ chỉ định tên thư mục thì file được copy sẽ có tên giống file gốc.
- Mặt khác, nếu muốn copy file rồi đổi thành tên mới thì có thể chỉ định tên như sau:
cp jump2.sh ~/Documents/jump3.sh
Câu lệnh ở trên sẽ copy file vào thư mục /backup với tên mới là new_file.txt.
Copy nhiều file cùng một lúc
Để copy nhiều file một lúc trong Linux, bạn hãy chỉ định tên của các file và thư mục gốc, đổi số cuối trong câu lệnh sẽ là thư mục đích cần copy đến.
cp -r dir_1/ jump2.sh jump.sh ~/Documents/
Khi copy nhiều file, cần lưu ý rằng đích để copy bắt buộc phải là một thư mục.
Ngoài ra, lệnh cp
còn cho phép khớp mẫu. Như bạn đang cần copy các file .png từ thư mục hiện tại vào thư mục /backup
thì có thể dùng lệnh sau:
cp ~/Desktop/*.sh ~/Documents/
Copy directory trong Linux bằng lệnh cp
Để copy thư mục trong Linux (bao gồm tất cả file và thư mục con có chứa trong đó), bạn dùng các option -R
hoặc -r
trong lệnh cp. Ví dụ bạn cần copy thư mục Pictures vào Pictures_backup thì có thể sử dụng lệnh như dưới đây:
cp -R ~/Downloads/file1/file6/file8/2024 ~/Downloads/file1/file6/file7/time/
Lệnh trên sẽ tạo thư mục đích rồi copy tất cả file và thư mục con trong thư mục gốc vào thư mục đích này. Nếu thư mục đích đã có sẵn thì thư mục gốc, cùng với các nội dung có trong đó, sẽ được copy đến thư mục đích mà không cần tạo nữa.
Các option khác cũng tương tự như thực hiện copy file trong Linux, chỉ khác ở chỗ bạn phải dùng option -R
khi cần thực hiện copy thư mục.
Copy file và thư mục trong Linux bằng lệnh rsync
rsync
là một công cụ command line rất nhanh và linh hoạt, được dùng để đồng bộ hoá file và thư mục giữa hai vị trí khác nhau. Vì vậy, bạn hoàn toàn có thể dùng lệnh rsync
để copy file đến những vị trí khác.
Đặc biệt hơn, rsync
cung cấp rất nhiều option khác nhau để kiểm soát cách hoạt động của lệnh. Trong đó option hữu ích nhất chắc chắn là -a
, có khả năng copy các thư mục (theo kiểu đệ quy), chuyển các thiết bị đặc biệt và vẫn bảo tồn được symlink (liên kết tượng trưng), thời gian chỉnh sửa, nhóm, quyền sở hữu và quyền truy cập.
- Để copy từng file sang một vị trí mới, bạn có thể dùng lệnh như sau:
rsync -a file.txt file_backup.txt
Nếu file đích đã có sẵn thì rsync sẽ ghi đè lên.
- Cách copy thư mục trong Linux bằng lệnh
rsync
cũng tương tự:
rsync -a /home/nam/Downloads/file1/file2/file3/compress_file.tar.gz /home/nam/Downloads/file1/file6
Câu hỏi thường gặp
Có thể sử dụng lệnh cp để tạo bản sao lưu dữ liệu tự động không?
Có thể. Và để nâng cao sự hiệu quả và linh hoạt bạn có thể kết hợp lệnh cp với các công cụ kỹ thuật khác như: tạo script (script) tự động; sử dụng công cụ rsync
Có cách nào để copy file đồng bộ giữa hai thư mục trong Linux không?
Có thể. Bạn có thể chọn Rsync làm dòng lệnh thực hiện để tối ưu các công việc như đồng bộ hoá dữ liệu giữa các máy tính và thư mục.
Có cách nào để copy file đồng bộ giữa hai thư mục trong Linux không?
Có. Rsync là công cụ phổ biến và hiệu quả nhất đáng để bạn lựa chọn trong việc thực thi lệnh. Ngoài ra bạn còn có thể sử dụng các công cụ khác như: Unison; Syncthing,…
Lời kết
Với những gì Vietnix chia sẻ bên trên trong series này, có thể giúp bạn hiểu hơn từng câu lệnh và hữu ích với trong quá trình sử dụng Linux. Đặc biệt, trong bài viết này là sử dụng câu lệnh cp
và rsync
để thực hiển copy file trong Linux nhanh chóng thông qua Terminal. Các hệ điều hành dựa trên Unix cũng có thể thực hiện tương tự với hai câu lệnh mạnh mẽ và phổ biến nhất là cp
và rsync
.