파일 B를 위치 C에서 위치 C로 복사하는 효과는 무엇입니까? 해당 cp 작업 중에 프로세스를 통해 35 %라고 말하면 fileA.big에 새로운 정보가 추가되고 900mb에서 930mb로 증가합니다.
최종 사본의 결과는 무엇입니까 (예 : locationC의 fileA.big)?
사본이 약 70 % 정도이고 원본 파일이 업데이트되었지만 이번에는 400MB로 잘린 경우 (즉, 사본 진행률이 잘림 지점을 넘어 서면) 최종 사본의 결과는 무엇입니까?
ext3 / ext4 파일 시스템에서 Linux OS를 참조하십시오. 볼륨 섀도우 매직 등이 없습니다. 일반 cp. 백업을 위해 라이브 couchdb 파일을 복사하여 호기심을 불러 일으켰지 만 특정 사용 사례가 아닌 일반적인 시나리오에 더 관심이 있습니다.
답변
fileA.big
복사 중에 키가 증가 하면 추가 된 데이터가 복사에 포함됩니다.
파일이 사본이 현재있는 위치보다 짧게 잘 리면 사본이 at 및 대상 파일에 중단 된 시간까지 복사 된 내용이 포함됩니다.
답변
Patrick은 다소 정확하지만 여기에 이유가 있습니다. UNIX에서 파일을 복사하는 방법은 다음과 같습니다.
- 에서 (더 많은) 바이트를 읽으십시오
fileA
. - 우리가 파일의 끝에서 (또는 과거) 바이트를 얻지 못하면 우리는 끝났습니다. 떠나다.
- 그렇지 않으면 바이트를 쓰고
fileB
1 단계로 되돌아갑니다.
그것을 알고, 그것이 간단하다는 것을 알면 몇 가지 경우를 볼 수 있습니다.
파일의 끝을 찾 자마자 복사가 완료됩니다. 복사하는 동안 파일이 커지고 있지만 복사하는 것보다 느리게 커지고 있다고 가정 해 봅시다. 복사 프로그램은 파일이 도착할 때 파일 크기가 더 커지기 때문에 원래 파일 크기를 계속 유지합니다. 그러나 어느 시점에서 파일의 끝 부분을 따라 잡고 현재 더 이상 바이트를 읽을 수 없기 때문에 파일이 끝났다는 것을 알고 있습니다 . 따라서 파일이 더 커지려고해도 종료됩니다.
파일이 잘 리면 복사 프로그램에 “Whoa, 파일의 끝을 지났습니다!”라고 표시됩니다. 그리고 종료합니다.
그리고 데이터베이스 프로그램 :-)에 의해 파일 조각이 무작위로 업데이트되는 경우 데이터가 모두 동시에 복사되는 것은 아니기 때문에 사본이 이전 데이터와 새 데이터의 혼합이 될 것입니다. 결과적으로 복사본이 손상 될 수 있으므로 일반적으로 라이브 데이터베이스의 복사본을 만드는 것이 좋지 않습니다.
(저는 CouchDB에 익숙하지 않으며 이러한 종류의 손상에 견딜 수 있도록 데이터베이스를 설계 할 수는 있지만 절대적으로 확신하는 것이 가장 좋습니다.)