그렇지 않으면, 이것을 달성 할 수있는 대체 명령 행 유틸리티가 있습니까?
그렇지 않으면, 이것을 달성 할 수있는 대체 명령 행 유틸리티가 있습니까?
답변:
하지만 cp
이 기능이 없어, 당신이 사용할 수있는 pv
이 작업을 수행 :
pv my_big_file > backup/my_big_file
참고 :이 방법은 파일의 권한과 소유권을 잃게됩니다. 이 방법으로 복사 한 파일은 사용자가 직접 생성 한 파일과 동일한 권한을 갖습니다.
이 예제에서는 pv
기본적으로 파일을 stdout *로 출력하고 >
연산자를 사용하여 파일로 리디렉션합니다 . 동시에 진행 상황에 대한 정보를 터미널에 인쇄합니다.
이것은 다음과 같습니다
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
시스템에 pv (또는을 입력 sudo apt-get install pv
) 를 설치 해야 할 수도 있습니다.
* : 기술적 인 비트
유닉스 계열 시스템에는 stdout (표준 출력), stderr (표준 오류) 및 stdin (표준 입력)의 세 가지 중요한 데이터 스트림이 있습니다. 모든 프로그램에는 세 가지가 모두 있습니다. >
리디렉션 연산자는 파일 프로그램 출력 리디렉션. 인수가 없으면 위에서 볼 수 있듯이 >
프로그램의 표준 출력 을 파일로 리디렉션 합니다. cp
기본적으로 더 멋진 것은 없습니다
cat source > destination
(여기서 cat
파일을 읽고 stdout에 인쇄합니다). pv
cat과 같지만 출력 스트림을 다른 곳으로 리디렉션하면 진행 정보를 대신 stdout으로 인쇄합니다.
한 번 봐 가지고 man pv
그것에 대해 더 배울 수 있습니다.
DoR 이이 답변 에서 제안한 다른 옵션 은 rsync를 대신 사용하는 것입니다.
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
진행률을 표시하면서 파일 권한 / 소유권을 유지합니다.
alias cp="rsync -avz"
cp가 오래되었습니다.
pv
, 당신은에서 스누핑 갈 수 /proc/PID of cp/fd
및 /proc/PID of cp/fdinfo
진행 상황을 파악하기. (속도를 추론하는 것은 당신에게 달려 있습니다.) 저는이 기술을 사용하여 시청 updatedb
합니다.
-z
아마도 네트워크 복사본에만 사용해야합니다. 로컬 사본에 대한 데이터 압축 및 압축 해제는 순수한 오버 헤드입니다.
rsync
에 후행을 추가하지 않도록하십시오 /
(또는 bash 완료가 자동으로 배치되면 제거하십시오). 그렇지 않으면 cp
(또는 gcp
)를 사용할 때와 다른 결과가 나타납니다 .
없습니다. 이유는 여기 를 참조 하십시오 . 필요한 것 이상 rsync
으로 --progress
매개 변수가 있습니다. 는 -a
등의 권한을 유지하며, -h
사람이 읽을 수있을 것입니다.
rsync -ah --progress source destination
결과는 다음과 같습니다.
Pictures/1.jpg
2.13M 100% 2.28MB/s 0:00:00 (xfr#5898, to-chk=1/5905)
Pictures/2.jpg
1.68M 100% 1.76MB/s 0:00:00 (xfr#5899, to-chk=0/5905)
-r
디렉토리를 재귀 하는 플래그를 지원합니다 . cp를 직접 대체 할 수도있다 :alias cp="rsync -ah --progress"
--progress
하고 있습니다. 따라서 AOL 키워드 검색에서 오는 사람들은 rsync -ah --info=progress2 [source] [destination]
IMHO와 같은 좀 더 깔끔한 방식으로 결과를 보여줍니다.
당신은 당신의 파일을 올바르게 사용할 수 전송하는 경우 보려면 gcp
및 gcp
CP 비슷하지만 복사되는 것을 볼 수 있도록 기본적으로 당신에게 진행률 표시 줄을 제공합니다. 프로그램의로서 위키 노트 , gcp
다음과 같은 몇 가지 유용한 기능을 가지고 있습니다
- 전송 진행 표시
- 오류 발생시 연속 복사 (다음 파일로 건너 뛰기)
- 복사 상태 로깅 : gcp는 성공적으로 복사 된 파일을 알 수 있도록 모든 작업을 기록합니다.
- 대상 파일 시스템 제한을 처리하기위한 이름 변경 (예 : FAT에서 호환되지 않는 문자 "*"또는 "?"삭제)
그러나 도구를 사용할 때 진행률 표시 줄이 100 %에 도달하더라도 미디어를 안전하게 제거하기 전에 터미널 프롬프트가 다시 나타날 때까지 기다려야 전송 프로세스가 성공적으로 완료됩니다.
gcp
파일을 복사하는 데 사용되며 --preserve
다양한 속성과 권한을 유지하고 --recursive
전체 디렉토리를 복사 할 수있는 옵션이 있습니다. 옵션에 대한 자세한 내용 man gcp
은 Ubuntu 맨 페이지를 온라인 으로 입력 하거나 참조하십시오 . 이 사이트 에서도 튜토리얼을 이용할 수 있습니다 .
gcp
리포지토리에서 설치
sudo apt-get install gcp
( 참고 : Ubuntu 12.10에서 새로운 자동 마운트 지점은 예를 들어 /media/user/usbdisk
)입니다.
다음을 입력하여 파일을 미디어에 복사 할 수 있습니다
gcp /home/mike/file.mp4 /media/usb
와 폴더를 미디어에 복사
gcp -rv ~/Podcasts /media/Mik2
gcp
진행률 표시 줄 을 사용한 샘플 출력 :
gcp ~/Videos_incIplayer/mars.flv /media/Mik2
Copying 168.57 MiB 100% |########################################################| 7.98 M/s Time: 00:00:22
물론 디스크에 복사 할 파일이나 폴더를 여러 개 지정할 수 있으며, 여기에서 다루는 다른 옵션이 많이 있습니다 man gcp
.
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
gcp를 시작하기 전에 설정할 수 있습니다 . 만약 머신이 헤드리스라면 가상 프레임 버퍼 또는 다른 것으로 xsession을 시작해야합니다. 그 시점에서 아마도 다른 프로그램을 찾아야합니다
gcp
꽤 괜찮지 만 DBUS / X 요구 사항은 이상합니다. ssh forwarding을 사용하여 SSH를 통해이를 처리 ssh -X user@host
했습니다.
이 정확한 목적으로 cURL을 사용하여 시작됩니다. 매뉴얼 페이지에는 "FILE"프로토콜이 지원되는 것으로 표시되므로 URL의 다른 프로토콜처럼 사용하십시오.
curl -o destination FILE://source
속도, 진행률, 남은 시간 등 모두 익숙한 형식으로되어 있습니다.
속도가 표시되지 않지만 여러 파일을 복사 할 때 명령에 대한 -v
옵션 cp
은 진행 정보를 제공합니다. 예 :
cp -rv old-directory new-directory
커널은 속도 및 종종 백분율과 같은 대부분의 데이터를 알고 있습니다. 최신 커널은 / proc 파일 시스템을 통해이를 공개합니다.
https://github.com/jnweiger/showspeed의 showspeed 가 해당 정보를 사용합니다. 이미 실행중인 프로그램에 연결하여 다음과 같이 정기적으로 업데이트 할 수 있습니다.
$ dd if=bigfile of=/tmp/otherbigfile &
$ showspeed dd
dd looks like a process name. pid=4417 matches av0=dd.
p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB) 9m:35
p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)
p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB) 8m:08
p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB) 8m:01
p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB) 7m:39
p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)
p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB) 7m:37
p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB) 7m:18
p/4417/fd/1w /tmp/otherbigfile 67MB/s (4.0GB)
p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)
...
pkill -USR1 dd
있도록 dd
상태를 보여주는 또 다른 옵션이 될 것 watch -n 1 pkill -USR1 dd
주기적으로 진행 상황을 보여줍니다 (초마다) 할 수 있습니다.
progress
리포지토리에는 다양한 명령을 검사하고 진행률 정보를 표시 할 수 있는 도구 가 있습니다.
명령을 사용하여 설치하십시오
sudo apt-get install progress
이 도구는 다음과 같이 사용할 수 있습니다.
cp bigfile newfile & progress -mp $!
산출:
[11471] cp /media/Backup/Downloads/FILENAME.file
29.9% (24.2 MiB / 16 MiB)
동안이 pv
지역을 처리 할 수 cp
사용, 작업 dd
과 pv
로컬 (처리 수 cp
) 및 원격 ( scp
) 작업.
dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv
에 path/to/dest.mkv
의해 출구를 확인하십시오touch path/to/dest.mkv
진행률을 표시 할 수 있지만 백분율 정보를 원할 경우
dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
교체 100M
소스 파일의 실제 크기 위.
동안은 scp
거의 사용, 현재 진행률을 표시 할 수 없습니다 dd
와 pv
케이크 한 조각이다.
ssh onemach@myotherhost dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
실행중인 명령과 관련된 설명자를 찾고 진행률과 속도를 표시 할 수있는 cv라는 새로운 도구가 있습니다 : https://github.com/Xfennec/cv
cv -w
실행중인 모든 cp, mv 등의 작업에 대한 통계를 출력합니다.
watch cv -q
더
cp
가 디렉토리를 재귀 적으로 복사 하는지 여부를 인식합니다 .
많은 사람들이 말했듯이 cp에는이 기능이 포함되어 있지 않습니다.
단지 $ 0.02를 던지기 위해, 나는 보통 사소한 복사 상황에서 무엇을합니까 (즉 no -R
) :
파일이 얼마나 큰지 확인하고 기억하십시오
복사 시작
다른 터미널을여십시오
watch ls -lh DIR
대상이있는 디렉토리에서 실행하십시오 .
이렇게하면 최소한의 번거 로움없이 대상 파일 크기를 계속 업데이트 할 수 있습니다.
디렉토리를 재귀 적으로 복사하는 등의 사소한 상황에 대한 대안 watch du -hs DIR
으로 DIR 크기의 요약을 볼 수 있습니다 . 그러나 du는 계산 시간이 오래 걸리고 복사 속도가 느려질 수 있으므로 -n INTERVAL
인수를 사용 하여 트레이드 오프를 수용 할 수 있습니다.
업데이트 : watch du와 함께 사용되는 명령과 함께 와일드 카드를 사용하는 경우 (예 watch du -hs backup/*
: 인용하는 것을 잊지 마십시오)
watch "du -hs backup/*"
그렇지 않으면 시계가 시작될 때 와일드 카드가 한 번만 확장 되므로 du는 새 파일 / 하위 디렉토리를 보지 않습니다.
dd status=progress
GNU Coreutils 8.24+ (Ubuntu 16.04)에 추가 된 옵션 :
dd if=src of=dst status=progress
터미널은 다음과 같은 유형의 라인을 보여줍니다.
462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s
rsync 3.1 이상 ( rsync --version
)이있는 경우 권한과 소유권을 유지하면서 디렉토리를 복사 (cp -Rpn)하고 "클러버 없음"을 반복하며 전체 파일 진행률 (파일 별 진행 대신), 복사 속도 및 ( 남은 예상 시간 :
sudo rsync -a --info=progress2 --no-i-r /source /destination
sudo는 소유하지 않은 디렉토리 / 파일을 처리하는 경우에만 필요합니다. 또한가 없으면 --no-i-r
복사 중 어느 시점에서 백분율이 더 낮은 숫자로 재설정 될 수 있습니다. 아마도 rsync의 이후 버전은 info = progress2와 함께 no-ir로 기본 설정되지만 현재 버전 3.1.2에는 없습니다.
이미 파일이 포함 된 디렉토리에 복사 할 때 남은 백분율과 시간이 크게 과대 평가 된 것으로 나타났습니다 (예 : 일반적으로 cp -n "클러버 없음"을 사용하는 경우).
쉘 스크립트를 사용하십시오.
#!/bin/sh
cp_p()
{
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}
이것은 다음과 같습니다
% cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================> ]
속성을 유지하는 또 다른 옵션은 다음과 같습니다 ( source
폴더 인 경우에 생성됨 destination
).
tar -c source | pv -e -t -p -r | tar -C destination -x
누군가에게 유용 할 수 있기를 바랍니다. 전송 시간을 예상하려면이 do -s source
를 사전 에 수행하고 이를 -s <size>
매개 변수로 전달하여 달성 할 수 있습니다 pv
.
-f -
중복됩니다. tar
의 기본 출력 c
및 입력 x
은 stdout 및 stdin입니다.
아래 git 저장소에서 progress_bar에 대한 소스 코드를 확인하십시오.
https://github.com/Kiran-Bose/supreme
또한, 사용자 정의 bash는 스크립트 패키지를 시도 최고
deb 파일을 다운로드하고 데비안 기반 배포판에 설치하거나 소스 파일을 다운로드하고 다른 배포판에 수정 및 사용하십시오
기능 개요
(1) 오픈 앱 ---- Firefox ---- 계산기 ---- 설정
(2) 파일 관리 ---- 검색 ---- 탐색 ---- 빠른 액세스
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3) 전화 관리 ---- 전화에서 이동 / 복사 ---- 전화로 이동 / 복사 ---- 폴더 동기화
(4) USB 관리 ---- USB에서 이동 / 복사 ---- USB로 이동 / 복사
pv는 cp 또는 다른 어떤 것이 든 pid가 주어진 파일 설명자를 보는 방법을 알고 있습니다.
설명서에서 :
(Linux only): Watching file descriptor 3 opened by another process 1234:
pv -d 1234:3
(Linux only): Watching all file descriptors used by process 1234:
pv -d 1234
예:
md5sum file &
[1] + 1271 suspended
pv -d 1271
417MiB 0:00:17 [12,1MiB/s] [============> ] 29% ETA 0:00:53
$ cp file.mov copy.mov &
[2] 3731
$ pv -d 3731
3:/media/windows/file.mov: 754MiB 0:00:04 [97,2MiB/s] [======================> ] 52% ETA 0:00:07
4:/media/windows/copy.mov: 754MiB 0:00:04 [97,3MiB/s] [ <=> ]
pv
같은 방법으로 권한을 처리하지cp
않습니다 ... (I 시도 하나 개의 빠른 테스트를 기반으로 :pv
...에 걸쳐 실행 비트를 복사하지 않았다rsync
. 한