`dd`에 대한 대안이 있습니까?


14

잘라 내기, 찾기 및 건너 뛰기와 함께 파일을 읽고 쓰는 데 사용해야하는 다른 도구 dd의 명령 줄 옵션은 불편하고 외적인 것처럼 보이며 느리지 만 정확한 탐색 모드 ( bs=1)와 빠르지 만 유연하지 않은 모드 ( bs=4k또는 기타) 중에서 선택하는 것을 좋아하지 않습니다 .

위치 31337에서 하나의 파일 (또는 파이프 또는 소켓 또는 dev)에서 555 바이트를 읽고 잘림 여부에 관계없이 위치 128205 (블록 512 + 43 사용)에있는 다른 파일에 쓰는 최신 도구가 있습니까?


2
여전히에 어떤 문제가 있는지 알 수 없습니다 dd. 인터페이스가 마음에 들지 않으면 항상 셸 스크립트 래퍼를 넣을 수 있습니다. ddPOSIX 표준에 있으며 이는 큰 장점입니다.
jw013

2
가장 중요한 것은 분수 블록을 찾거나 건너 뛸 수 없다는 것입니다. 두 번째 잘못된 것은 status=noxfer기본값이 아니며 고장이며 필요한 것입니다 iflag=fullblock(일부 스크립트에서 생략 => 깨진 데이터).
Vi.

4
1. bs=1=> 전체 파이프 라인이 느립니다. 예를 들어 정확한 프레임에서 시작하여 비디오 파일을 덤프 할 수 있습니다. 2. "일부 산술이 필요합니다"=> oneliners 및 일상적인 쉘 명령에는 적합하지 않습니다.
Vi.

1
PSA는 : dd conv=seek_bytesseek바이트 정밀 작업을.
i336_

1
@ i336_ 필자가 생각하기에 가장 안전한 옵션은 쉘 스크립트를 사용하지 않고 독립형 정적 링크 실행 파일을 작성하는 것입니다. 나는 때때로 대안을 찾기 위해 쇼핑을했다. 왜냐하면 때때로 미친 물건이 bash에서 직접 가능하다는 소식을 듣고 직접 파일 액세스가 그 미친 물건 중 하나인지 궁금해했기 때문이다.
Trejkaz

답변:


4

도구가 있습니다 ddrescue(주의, dd_rescue거의 동일한 기능을 가진 다른 프로그램도 있습니다). 긴 옵션의 경우 짧은 대시 또는 이중 대시의 경우 단일 대시와보다 친숙한 구문을 사용합니다. 매뉴얼 페이지에서 :

   -i, --input-position=<bytes>
          starting position in input file [0]

   -K, --skip-size=<bytes>
          initial size to skip on read error [64 KiB]

   -M, --retrim
          mark all failed blocks as non-trimmed

   -o, --output-position=<bytes>
          starting position in output file [ipos]

1
ddrescue - --> Infile and outfile are the same., ddrescue /dev/stdin /dev/stdout-> Infile and outfile are the same.. 이야기의 나쁜 시작 ...
Vi.

방금 시도했습니다 dd_rescue. 파일 (stdin)을 찾을 수 없다는 경고 메시지가 표시되지만 진행됩니다. 시도해 볼 수 있습니다. 그러나 ddrescue더 완전한 기능과 성숙함을 느낍니다.
Marco

1
@Vi .: 메신저를 쏘지 마십시오. ddrescue맞아요, 파이프를 찾을 수 없습니다. 파일의 특정 지점에서 읽기를 시작하려면 다른 프로그램에서 파이프 된 데이터가 아니라 해당 파일에 대한 액세스 권한을 부여해야합니다. 또한 파이프를 사용하는 것은 파이프에서 탐색을 에뮬레이트하는 유일한 방법은 처리하지 않으려는 부품을 읽고 버리는 것이므로 파이프를 사용하면 궁극적 인 속도로 원하는 바에 맞서 싸울 수 있습니다. 실제 파일 내에서 찾는 것이 훨씬 효율적입니다.
워렌 영

실제로이 도구는 파손 된 데이터를 구제하기 위해 설계되었으므로 파이프 기능 이 없습니다 . 입력 파일을 검색하는 유연성을 원하지만 결과를 표준 출력으로 파이프하려는 경우 약간의 수치입니다. 그러나 의도 된 목적으로 훌륭합니다.
Monica와의 가벼움 경주

2

dcfldd 는 또 다른 dd 대안입니다. 입 / 출력 탐색 유연성에 대한 OP의 질문을 다루지는 않지만 Google 검색을 통해 여기에 도착하는 다른 사람들에게 유용 할 수 있습니다.

gnu dd를 기반으로하며 다음과 같은 추가 기능이 있습니다.

  • 해싱 온더 플라이-dcfldd는 전송되는 입력 데이터를 해시하여 데이터 무결성을 보장합니다.
  • 상태 출력-dcfldd는 전송 된 데이터의 양과 작업 소요 시간의 측면에서 사용자의 진행 상황을 업데이트 할 수 있습니다.
  • 유연한 디스크 와이프-dcfldd를 사용하면 원하는 경우 알려진 패턴으로 디스크를 빠르게 닦아 낼 수 있습니다.
  • 이미지 / 와이프 확인-dcfldd는 대상 드라이브가 지정된 입력 파일 또는 패턴과 비트 단위로 일치하는지 확인할 수 있습니다.
  • 다중 출력-dcfldd는 동시에 여러 파일 또는 디스크로 출력 할 수 있습니다.
  • 분할 출력-dcfldd는 split 명령보다 구성 성이 더 높은 출력을 여러 파일로 분할 할 수 있습니다.
  • 파이프 출력 및 로그-dcfldd는 모든 로그 데이터와 출력을 기본적으로 파일뿐만 아니라 명령으로 보낼 수 있습니다.

2

좋은 대안은 pv입니다. 가장 효율적인 블록 크기를 자동으로 계산할뿐 아니라 기본적으로 속도를 높일뿐만 아니라 무엇보다도 진행률을 제공합니다. 사용은 간단합니다.

pv < /dev/sda > sda.img

압축에서도 잘 작동합니다. 한 번에 디스크를 백업하고 압축하는 빠른 방법은 다음과 같습니다.

pv < /dev/sdb | pigz -9 > disk.img.gz

자세한 내용은 여기를 참조 하십시오 .


1
주요 예상 기능은 파이프에 대한 탐색이 없기 때문에 pv (파이프 뷰)가 제공하지 않는 출력 및 입력 파일을 탐색하는 것입니다.
Vi.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.