누락된 부분 추가

누락된 부분 추가

foo.txt내 백업 드라이브에 (30GiB) 파일이 있습니다 .

내 일반 드라이브에 파일이 있습니다 foo.txt(60GiB, 처음 30GiB는 정확히 동일함).

전체 파일을 다시 복사하지 않고 누락된 부분만 추가하려면 어떻게 해야 하나요?

어쩌면 뭔가가 dd효과가 있을까요?

답변1

파일을 동기화하려면 "더 짧은 파일에 데이터를 추가"하는 옵션이 rsync있습니다 .--append

rsync --append /path/to/foo.txt /path/to/foo.txt
#              ^- original      ^- copy

예시 실행

steeldriver의 답변에서 명백히 복사된 테스트 시나리오 - 자세한 출력을 위해 -P및 옵션을 추가했습니다 .-v

$ dd if=/dev/urandom bs=1M iflag=fullblock count=60 of=origfile
60+0 records in
60+0 records out
62914560 bytes (63 MB, 60 MiB) copied, 0.328983 s, 191 MB/s
$ dd if=origfile bs=1M iflag=fullblock count=30 of=newfile
30+0 records in
30+0 records out
31457280 bytes (31 MB, 30 MiB) copied, 0.0292976 s, 1.1 GB/s
$ cmp origfile newfile
cmp: EOF on newfile
$ rsync -Pv --append origfile newfile
origfile
     62,914,560 100%  365.47MB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 31,465,039 bytes  received 35 bytes  20,976,716.00 bytes/sec
total size is 62,914,560  speedup is 2.00
$ cmp origfile newfile
$ 

답변2

예, 사용할 수 있습니다 dd. 요령은 bsx skipobsx를 seek모두 선택하는 것입니다.정확한필수 오프셋

전.

먼저 테스트 파일을 생성해 보겠습니다. 설명을 위해 60GiB 대신 60MiB를 선택했습니다.

$ dd if=/dev/urandom bs=1M iflag=fullblock count=60 of=origfile
60+0 records in
60+0 records out
62914560 bytes (63 MB, 60 MiB) copied, 0.376846 s, 167 MB/s

이제 정확히 첫 번째 절반을 복사해 보겠습니다. 다시 사용하여 dd(필수는 아니지만)

$ dd if=origfile bs=1M iflag=fullblock count=30 of=newfile
30+0 records in
30+0 records out
31457280 bytes (31 MB, 30 MiB) copied, 0.063891 s, 492 MB/s

서로 다른지 확인합니다.

$ cmp origfile newfile
cmp: EOF on newfile after byte 31457280, in line 122106

이제 두 파일의 첫 번째 x 블록을 건너뛰고 from 에서 origfile로 복사해 보겠습니다 .newfile301M

$ dd if=origfile bs=1M iflag=fullblock skip=30 count=30 of=newfile seek=30
30+0 records in
30+0 records out
31457280 bytes (31 MB, 30 MiB) copied, 0.0632964 s, 497 MB/s

마지막으로 파일이 이제 동일한지 확인합니다.

$ cmp origfile newfile
$ 

답변3

이는 거대한 파일이지만 크기를 처리할 수 있다면 split명령을 사용하여 60GB 파일을 file1file2. 그런 다음 cat원하는 부품을 다시 결합하는 데 사용합니다 .

예:

split -n2 60Gfile
cat xab >> 30Gfile

split -n2파일을 반으로 나누고 2개의 파일을 xaa만들고xab

원하는 대로 작동하지 않으면 명령에 다른 옵션이 있으므로 분할 설명서를 읽어보세요.

관련 정보