dd로 DVD를 복사 할 수없는 이유는 무엇입니까?


12

dd, dd_rescueddrescue 시도했지만 모두 실패했습니다. 이러한 도구가 파일 시스템을 우회하여 비트 단위로 복사한다고 생각했습니다.

dd는 속이고, 완료되지만 작은 파일을 생성하고 완료되었음을 나타냅니다.

dd_rescuse 및 ddrescue가 읽기 오류에 대해 불평하고 있으며 너무 느립니다. 이 도구는 10 분 안에 몇 MB 만 복사 할 수 있습니다.

왜 이런 일이 발생합니까? 왜 이러한 도구가 실패합니까?


AnyDVD를 사용하면 Win7 호스트에서 디스크를 1 초 안에 복사 할 수 있습니다. 그것은 UDF 파일 시스템이 흥미롭게 패치되었다고 말하며, 불량 섹터가 없다고 말합니다. 전체 디스크를 10 분 안에 복사 할 수 있습니다.
업데이트 : 솔루션에 관해서 는 superuser에 대한 비슷한 질문을 참조하십시오 .

답변:


16

가장 간단한 대답은 dd, dd_rescue 및 ddrescue가 복사 방지 체계를 물 리치도록 설계되지 않았다는 것입니다. 그들은 데이터 형식에 대한 가정을하지 않으며 디스크 데이터에 원본 전체의 무결성을 유지하려고합니다.

의 경우 ddI는 복사 방지 계획의 일부인 디스크에 의도적 읽기 오류로 인해 종료되는 것을 생각한다. dd질문에 명령 행 출력을 포함시킨 경우이를 확인하는 것이 도움이됩니다 . dmesg명령 출력 에 일부 읽기 오류가 기록되어있을 수도 있습니다 .

명령 행 dd에서 noerror플래그를 전달하여 더 많은 파일을 복사 할 수 있습니다 . 그러나 이로 인해 최종 이미지가 손상 될 수 있습니다.


고마워요 파일 시스템을 무시하고 "비트 단위"복사를 수행하고 읽기 오류를 0 바이트로 바꾸면 여전히 손상된 이미지가 생성됩니까? 결국 나는 그 데이터를 전혀 읽을 수없는 0 바이트로 바꿉니다. 나중에 dmesg 출력을 포함시킬 것이며 DVD가 없습니다.
알리

최종 이미지가 "손상되었는지"확인하는 유일한 방법은 사용 가능한 경우 해결하는 것입니다. 그중 일부는 실제 깨진 블록 만 0으로 읽히고 주변 블록은 읽지 않도록합니다. 이는 bs = 512 (CD / DVD 블록 크기의 메모리에서) 매개 변수를 dd로 전달해야 함을 의미 할 수 있습니다. 실제로 그런 종류의 일이 dd_rescue가 수행하도록 설계된 것입니다. 시간이 걸리지 만 가능한 최소한의 데이터를 잃어 버리려고합니다.
Richm

모든 도움을 주셔서 감사합니다. 나는 너무 많은 수준에 망쳐 져 있습니다. AnyDVD를 사용했습니다.
Ali

15

사람들은 DVD 메뉴를 표시하는 VLC를 사용하여 DVD를 열면 데이터에 액세스 할 수 dd있지만 VLC가이 기능을 수행하는 이유와 방법을 아직 아무도 설명하지 못했습니다.

SMB를 사용하여 네트워크를 통해 DVD 드라이브의 루트를 공유하여 TV에 연결된 Kodi 장치에서 컴퓨터의 DVD를 재생하려고 할 때이 동작을 복제했습니다. 그것은하지 작업을했다 하지 않는 한 나는 첫 번째 점 KODI가 마술 파일을 재생할 수있는 VLC와 DVD를 열었다.

이런 종류의 마술은 내 감성을 상하게하기 때문에 파고 갔다. 문제의 근본 원인은 DVD 드라이브가 사용자를 상대로 작동하기 때문 입니다. 당 위키 백과 :

그러나 드라이브에서 CSS로 컴파일 된 디스크를 감지하면 저작권으로 표시된 논리 블록에 대한 액세스가 거부됩니다 (§6.15.3 [2]). 플레이어는 먼저 인증 핸드 셰이크를 실행해야합니다 (§4.10.2.2 [2]).

따라서 DVD를 읽을 경우 재생할 수없는 암호화 된 데이터를 얻는 것이 아닙니다. 시스템의 일부 프로그램이 Linux 커널에 의해 노출 된 일부 DVD 관련 IOCTL (이 경우 DVD_AUTH )을 사용하여 드라이브에 자체 인증되지 않으면 드라이브는 비트를 다시 보내지 않습니다 . 이것이 I / O 오류로 나타나는 이유입니다.

이 IOCTL의 작동 방식에 대한 자세한 정보는 이 메일 링리스트 게시물을 통해 구현 한 사람으로부터 얻을 수 있지만 기본적으로 사용자 소프트웨어가 DVD 드라이브 하드웨어와의 비밀 핸드 셰이크를 수행 할 수있는 방법을 제공합니다.

VLC 통해이 비밀 악수를 수행 libdvdcss차례에 할 것, GetBusKey()에서를css.c . 아마도 libdvdcss모든 VLC에 의존하는 대신 파일로 액세스하기 위해 드라이브의 잠금을 해제하기 위해 링크 된 독립형 프로그램을 작성할 수 있습니다. 이 잠금 해제 된 일단을 포함, 모든 사람에게 (아직 암호화하지만 지금은 읽을 수) 비트를 다시 보내도록 드라이브는 프로그램이 읽는되는 말할 수 없다 ddcp.

(흥미롭게도 DVD IOCTL은 디스크의 데이터를 읽은 후에 해독 키를 사용하는 유일한 방법입니다. 복사 한 파일 디렉토리를 재생하는 경우 액세스 할 수 없습니다. 키를 얻기 위해 IOCTLs, 그래서 libdvdcss암호화를 해독하기 위해 통계적 cryptanalysis에 의지합니다 .)


감사. VLC로 DVD를 열 수 없습니다. 불행히도 내 상황은 훨씬 더 복잡했습니다. 그럼에도 불구하고 귀하의 답변을 상향 조정했습니다.
Ali

이것은 나에게도 효과가 있었던 것 같습니다. vlc이후에 열 때 모든 isos가 DVD 메뉴를 올바르게 표시 하지는 않지만 (전공은 아닙니다. 디스크의 백업 으로이 작업을 수행하고 있으며 내용을 잃지 않는 것이 여기에 중요합니다). 나는 같은 도구를 사용 makemkv하거나 handbrake같은 효과를 발휘할 수 있습니다 vlc. 제쳐두고, 이것은 Linux VM에서 vlc실행하면서 Windows에서 dd실행하는 데 도움이되었습니다.
LRE

좋은 설명! 감사합니다. 그것은 모든 것을 설명합니다. 나는 같은 퍼즐을 가지고 있었지만 어떤 Wikipedia 기사를 체크 아웃하지는 않았다.
Shi B.

1
명령 줄에서 DVD를 잠금 해제 할 수있는 cssauth 프로그램도 있습니다. 본질적으로 당신은 입력 testdvd /dev/dvd하고 그게 다입니다.
Antonis Christofides

14

왜 이것이 효과가 있는지 잘 모르겠지만 VLC로 DVD를 먼저 열면 메뉴를 볼 수있을뿐 아니라 일시 중지하면 dd가 작동합니다.


감사. VLC로 DVD를 열 수 없습니다. 불행히도 내 상황은 훨씬 더 복잡했습니다.
Ali

이 의견이있을 때 나를 위해 일했지만 토템으로 열었습니다 (vlc가 없음). 기묘한.
Kyle

2

VLC로 디스크를 열면 보호 기능이 무시됨을 확인할 수 있습니다. 그러나를 사용할 때 ddVLC를 연 후에 디스크를로드하고 VLC에 노출 된 디렉토리를 사용하여 발견 한 후이 명령을 사용해야했습니다.

dd if=/dev/sr0 of=image_of_disc.iso

이 명령이 작동해야한다고 읽은 많은 게시물과 다른 점은 다음과 같습니다.

dd if=/dev/cdrom of=image_of_disc.iso - NON-WORKING

증명:

me@me:~$ dd if=/dev/cdrom of=/media/me/image_of_disc.iso
dd: error reading ‘/dev/cdrom’: Input/output error
103336+0 records in
103336+0 records out
52908032 bytes (53 MB) copied, 2.04212 s, 25.9 MB/s

me@me:~$ dd if=/dev/sr0 of=/media/me/image_of_disc.iso
dd: error reading ‘/dev/sr0’: Input/output error
2846992+0 records in
2846992+0 records out
1457659904 bytes (1.5 GB) copied, 314.351 s, 4.6 MB/s
me@me:~$ 

0

dvdbackup 이라는 프로그램을 추천 할 수 있습니다

DVD 백업 사본을 폴더로 만들 수 있습니다. 나는 그것이 ISO를 만든다고 생각하지 않습니다. 따라서 수동으로이 단계를 수행해야합니다.


0

사람들은 DVD 메뉴를 표시하는 VLC를 사용하여 DVD를 열면 데이터를 dd에 쉽게 액세스 할 수 있지만 VLC가 왜 그렇게하는지에 대해서는 아무도 설명하지 않았습니다.

'VLC를 사용한 DVD 열기'도 처음으로 경험했습니다. 따라서 스크립트에서 dd를 사용할 때 다음 순서를 사용합니다.

cvlc --run-time 6 --start-time 16 /dev/sr0 vlc://quit 

`dd if=/dev/sr0 of=/home/user/Videos/name.iso`

2
정확히 무엇을 말하는가? 왜“아무도 왜 그런지 어떻게 설명하지 않았습니까?”라고 인용 하는가? 당신이 대답하지 않을 경우 질문? 왜 dd백틱으로 명령 을 표시 합니까? ……………………………………… 의견에 응답하지 마십시오;  명확하고 완전하게 답변을 편집 하십시오.
G-Man, 'Reinstate Monica'라고

@ G-ManSays'ReinstateMonica '는 기본적으로 명령 줄 vlc를 사용하여 GUI없이 실행하고 16 초 비디오에서 시작하여 6 초 동안 재생하고 그 후에는 매우 vlc를 제안했습니다. 숫자는 약간 임의적이지만 좋은 대안입니다.
Shi B.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.