2009-08-30 3 views
1

고장난 LaCie 500GB 하드 드라이브에 문제가 있습니다. 그것은 약 10 분 동안 만 머 무르며, 그 후에는 사용할 수 없게됩니다. 그 10 분 정도 나는 완전한 통제권을 가지고있다.큰 파일을 유닉스에서 반복적으로 분할하는 방법은 무엇입니까?

내 메인 mov 파일 (160GB)이 빨리 옮겨 질 수 없기 때문에 작은 덩어리로 나누면 모든 것을 옮길 수 있다고 생각했습니다. SPLIT 명령을 사용하여 동영상 파일을 분할하려고했지만 10 분 이상 걸렸습니다. 나는 그것이 실패하기 전에 각각 약 2GB의 파일 약 14GB로 끝났다.

split 명령을 사용하고 기존 파일 청크를 건너 뛸 수있는 방법이 있습니까?이 파일을 분할 할 때 xaa, xab, xac가 표시되고 그 시점 이후에 시작되므로 파일을 계속 분할합니다. xad로 시작 하시겠습니까?

또는 여러 단계로 파일을 분할 할 수있는 더 나은 옵션이 있습니까? csplit도 살펴 보았지만 옵션과는 다른 것으로 보입니다.

감사합니다.

-------- UPDATE ------------ 나는 다음과 같은 사용하여이 작업을 수행 할 수 있었다 bcat 마크의 도움으로 이제

dd if=/Volumes/badharddrive/file.mov of=/Volumes/mainharddrive/movieparts/moviepart1 bs=1g count=4 
dd if=/Volumes/badharddrive/file.mov of=/Volumes/mainharddrive/movieparts/moviepart2 bs=1g count=4 skip=4 
dd if=/Volumes/badharddrive/file.mov of=/Volumes/mainharddrive/movieparts/moviepart3 bs=1g count=4 skip=8 
etc 
cat /Volumes/mainharddrive/movieparts/moviepart[1-3] -> newmovie.mov 
+0

; -D – pavium

답변

4

항상 dd 명령을 사용하여 이전 파일의 청크를 새 위치로 복사 할 수 있습니다. 이것은 실패한 드라이브에 불필요한 기록을하지 않는 추가 이점이 있습니다. 이처럼 dd을 사용하면 큰 MOV 파일로 지루할 수 있지만 프로세스의 일부를 자동화하는 간단한 쉘 스크립트를 작성할 수 있어야합니다.

3

Duh! bcat의 대답은 나의 것보다 낫다. 그러나 내가 몇 가지 코드를 작성한 이후에 나는 앞으로 나아가 그것을 게시 할 것이라고 생각했다.

input = ARGV[0] 
length = ARGV[1].to_i 
offset = ARGV[2].to_i 

File.open "#{input}-#{offset}-#{length}", 'w' do |file| 
    file.write(File.read input, length, offset) 
end 

이처럼 사용

길이 INPUT_FILE

$ 루비 test.rb 오프셋

나는 500TB 하드 드라이브에 내 손을 좀하고 싶습니다,하지만 어쩌면 그들도 믿을 수 아니에요
+1

고마워요,하지만 제 대답이 더 나을지 모르겠습니다. 당신은 실제로 작업 코드를 주었는데, 항상 유용합니다. – bcat

+0

길이가 너무 길면 내 문제가 생길 수 있다고 생각합니다. dd가 잘 검증 된 것 외에도. –

+0

둘 다 감사합니다! –

관련 문제