이 질문은 내 이전에 기반한 것입니다.질문. 두 컴퓨터(A와 B) 모두에서 동일한 파일 구조를 가지고 있습니다. 파일은 동일하지만 타임스탬프가 다릅니다(A의 시간은 정확하고 B의 시간은 틀림). 위에서 언급한 질문은 이 문제를 다루고 있습니다.
그러나 나는 다음 트릭을 시도했습니다. 다음을 통해 머신 B의 구조에 있는 모든 파일의 수정 시간을 1.1.1970으로 변경했습니다.
awk 'BEGIN{FS="\t"}{print "touch --no-create --no-dereference -m -t \"197001010000\" \"" $1 "\""}' files.txt > commands2.sh
parallel < "commands2.sh"
파일은 files.txt
컴퓨터 A에서 생성되었으며 다음 행을 포함합니다. 여기서 파일의 절대 경로 는 이고 수정 날짜는 로 출력 "$1"\t"$2"
됩니다 .$1
$2
stat -c %y $1
stat
파일 날짜가 실제로 1970년으로 설정되어 있음 을 확인했습니다 . 테스트를 위해 Krusader 디렉터리 동기화를 사용했고 Krusader는 A에서 B로 데이터를 올바르게 복사하기로 결정했습니다.
그런 다음 rsync
먼저 테스트합니다 A -> B
.
rsync -azEX --dry-run --itemize-changes --info=BACKUP1,DEL1,NAME1,REMOVE1 --delete --exclude-from=/home/user/.rsync-transport-in-ssh.rules /home/user user@remote:/home/user/
출력이 비어 있습니다. 그 다음에B -> A
rsync -azEX --dry-run --itemize-changes --info=BACKUP1,DEL1,NAME1,REMOVE1 --delete --exclude-from=/home/user/.rsync-transport-in-ssh.rules user@remote:/home/user/ /home/user
출력에는 이루어져야 하는 전송으로 가득 차 있지만 B의 모든 데이터는 1970년의 것이므로 이는 완전히 잘못된 것입니다.
따라서 질문은 두 가지입니다. 1) rsync
복사할 위치를 결정하는 데 실제로 사용되는 것은 무엇입니까? 2) 내가 원하는 방식으로 동작을 시행할 수 있는 방법이 있습니까?
이 날짜 를 rsync
업데이트하지 않았고 B
대부분의 경우 이 날짜가 A
.
답변1
- 복사할 위치를 결정하기 위해 rsync는 정확히 무엇을 사용합니까?
- 내가 원하는 대로 행동을 강제할 수 있는 방법이 있나요?
rsync
여러 가지 방법을 사용하여 파일 내용을 복사할지 여부를 결정합니다. 예를 들어,- 파일 크기 및 타임스탬프 비교
- 콘텐츠 체크섬
- 소스와 대상의 위치(즉, 동일한 파일 시스템에 있는지 아니면 다른 서버에 있는지)
rsync
파일 메타데이터(권한, 소유권, 타임스탬프 등과 같은 파일에 관한 데이터) 전송과 파일 콘텐츠 간에는 차이가 있습니다 . 또한 두 시스템이 관련된 경우rsync
체크섬을 사용하여 파일 내용 중 어느 부분이 변경되었는지 확인할 수 있으므로 전체 파일이 아닌 변경된 부분만 전송하면 됩니다.
원격 서버에 파일을 복사합니다. 이제 로컬 복사본을 수정하여추가의바이트시작. 파일을 복사 하는 데 사용되며 rsync
단 하나의 데이터 블록으로 블록 체크섬 스트림을 전송한다는 것을 알 수 있습니다. 소스 및 대상 업로드 속도가 1Mbit/s로 제한되어 인스턴스 중 하나 앞에 바이트를 추가하는 600MB 파일 예에서 소스 파일의 "복사"에는 평균 유효 속도 415Mbit에 대해 20초가 걸렸습니다. /에스.
- 답변자이전 질문