Lệnh copy trong linux - Hiển thị thanh tiến trình trong khi sao chép/di chuyển tệp

Advanced-Copy (lệnh copy trong linux nâng cao) là một chương trình dòng lệnh mạnh mẽ, rất giống với phiên bản gốc của câu lệnh cp và các công cụ mv nhưng được sửa đổi một chút.

Phiên bản sửa đổi của câu lệnh cp này bổ sung hiển thị thanh tiến trình cùng thời gian tổng cộng để hoàn thành quá trình sao chép các tệp lớn từ một vị trí này sang vị trí khác.

Tính năng bổ sung này rất hữu ích đặc biệt khi sao chép các tệp lớn, nó cung cấp cho người dùng một ý tưởng về trạng thái quá trình sao chép và thời gian cần để hoàn thành.

Cài đặt lệnh Advanced-Copy trong Linux (lệnh copy trong linux nâng cao)

Cách duy nhất để cài đặt tiện ích Advanced-Copy trên hệ thống Linux là bằng cách xây dựng từ mã nguồn sử dụng câu lệnh curl duy nhất sau đây, nó sẽ tải xuống, gửi phiên bản vá, biên dịch coreutils và tạo ra các tệp: ./advcpmv/advcp và ./advcpmv/advmv.

# curl https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh --create-dirs -o ./advcpmv/install.sh && (cd advcpmv && sh install.sh)

Bạn có thể gặp lỗi sau đây trong quá trình cài đặt.

checking whether mknod can create fifo without root privileges... configure: error: in `/root/advcpmv/coreutils-9.1':
configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
See `config.log' for more details

Chạy câu lệnh sau trên màn hình cửa sổ để khắc phục lỗi đó và chạy lại câu lệnh curl.

# export FORCE_UNSAFE_CONFIGURE=1
# curl https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh --create-dirs -o ./advcpmv/install.sh && (cd advcpmv && sh install.sh)

Sau khi quá trình cài đặt hoàn tất, hai câu lệnh mới được tạo ra tại ./advcpmv/advcp và ./advcpmv/advmv. Bạn cần thay thế các câu lệnh cpmv gốc của bạn bằng hai câu lệnh mới này để có thanh tiến trình khi sao chép tệp.

# mv ./advcpmv/advcp /usr/local/bin/cp
# mv ./advcpmv/advmv /usr/local/bin/mv

Lưu ý: Nếu bạn không muốn sao chép các câu lệnh này vào các đường dẫn hệ thống tiêu chuẩn, bạn vẫn có thể chạy chúng từ thư mục nguồn như “./advcpmv/advcp” và “./advcpmv/advmv hoặc tạo ra các câu lệnh mới như được hiển thị bên dưới”.

# mv ./advcpmv/advcp /usr/local/bin/cpg
# mv ./advcpmv/advmv /usr/local/bin/mvg

Hiển thị thanh tiến trình khi sao chép tệp và thư mục

Nếu bạn muốn thanh tiến trình hiển thị trong suốt quá trình sao chép tệp và thư mục, bạn cần thêm các dòng sau vào tệp ~/.bashrc của bạn.

# echo alias cp '/usr/local/bin/advcp -g' >> ~/.bashrc
# echo alias mv '/usr/local/bin/advmv -g' >> ~/.bashrc

Bạn cần đăng xuất rồi đăng nhập lại để hoạt động một cách chính xác.

Cách sử dụng lệnh Advanced-Copy trong Linux

Câu lệnh vẫn giống như trước, chỉ thay đổi là thêm tùy chọn “-g” hoặc “–progress-bar” cho câu lệnh cp. Tùy chọn “-R” được sử dụng để sao chép các thư mục theo cách đệ quy.

Sao chép tệp bằng thanh tiến trình

Dưới đây là ví dụ về quá trình sao chép sử dụng lệnh sao chép nâng cao.

# cp -gR ubuntu-20.04.3-desktop-amd64.iso /home/tecmint/
OR
# cp -R --progress-bar ubuntu-20.04.3-desktop-amd64.iso /home/tecmint/
Copy Files with Progress in Linux
Sao chép tệp có tiến trình trong Linux

Di chuyển tệp bằng thanh tiến trình

Dưới đây là một ví dụ về lệnh ‘mv ‘ kèm theo ảnh chụp màn hình.

# mv --progress-bar Songs/ /data/
OR
# mv -g Songs/ /data/
Move Files with Progress in Linux
Di chuyển tệp có tiến trình trong Linux

Vui lòng nhớ rằng các câu lệnh gốc không bị ghi đè nếu bạn cần sử dụng chúng hoặc bạn không hài lòng với thanh tiến trình mới và muốn quay trở lại câu lệnh cp và mv gốc. Bạn có thể gọi chúng thông qua /usr/bin/cp hoặc /usr/bin/mv.