sudo rsync -a는 mtime을 보존하지 않습니다

sudo rsync -a는 mtime을 보존하지 않습니다

반복적으로 충돌이 발생하는 Ubuntu 16.04를 디버깅하기 위해 /var/log를 HDD에서 외부 USB 미디어로 백업하고 싶습니다. 라이브 OS(Ubuntu 16.04)를 실행 중이며 --archive 옵션을 사용하고 있습니다.

$ sudo rsync --archive /media/ubuntu/2f1ea741-cc93-4b0e-ad74-1e21d56d27a9/var/log/* /media/ubuntu/transcend/DebuggingSystemCrash@box3/var_log_2016-07-04-0939

예상되는 동작

아카이브 모드는 다음과 같으 -rlptgoD므로 수정 시간을 보존해야 합니다.

-t, --times                 preserve modification times

관찰된 행동

파일의 타임스탬프(atime그리고시간은아니요저장 중입니다. 스크린샷을 참조하세요. 폴더 수정 시간저장해.

스크린샷, 왼쪽은 소스, 오른쪽은 대상

소스와 타겟이 모두 설치되어 있으므로 이 문제는 다음과 관련이 있을 수 있습니다.소스 트리에 마운트 지점이 있을 때 파일의 타임스탬프를 보존하도록 rsync에 지시하는 방법.

나는 또한 다음을 읽었습니다.

내가 뭐 놓친 거 없니?

고쳐 쓰다

아니요sudo로 rsync를 실행하면 mtime과 관련하여 예상되는 동작이 생성되지만 일부 파일은 건너뜁니다.

rsync 출력 비교: $ sudo rsync -a 대 $ rsync -a

답변1

와 의 차이는 sudo다음 발췌로 인해 발생할 수 있습니다.문서/파일 시스템/vfat.txt. (대상 파일 시스템의 유형과 ^Wfilesystem 디렉토리를 소유한 사람을 알아야 합니다 vfat. 이 경우 마운트 옵션에 의해 결정됩니다 vfat).

어쨌든 파일 시스템 유형의 중요성을 보여주기 때문에 이것을 게시하고 있습니다. 전체적인 결론은Linux에서 FAT를 사용하는 것은 고통스럽습니다(FAT의 rsync에도 특별한 문제가 있습니다)..

나열된 문제 중 적어도 하나가 다른 기본값(아마도 udisks수동 mount명령이 아닌 GUI에서 사용되는 값)으로 해결되었을 것이라고 확신합니다. 어떤 경우 에라도Linux 운영 체제의 일부를 FAT에 복사하고 파일 메타데이터에 특정 결과가 필요한 경우 시간을 낭비하고 있는 것입니다.(타임스탬프) 또는 파일 이름. 이 경우 기본 Linux 파일 시스템을 사용해야 하며, 가급적이면 소스 파일 시스템과 동일한 유형을 사용해야 합니다.

또는 단일 파일을 복사하는 대신파일기본 Linux 도구(예: tarZip 파일 사용)를 사용하지만 백업용으로 설계됨리눅스*nix 파일 - 이름과 가장 일반적인 메타데이터입니다. 예를 들어 tar -c -f out.tar input-directory/(압축 생략)입니다.

Linux에서 FAT 타임스탬프 설정에 대한 참조 문서

allow_utime=### -- This option controls the permission check of mtime/atime.

                  20 - If current process is in group of file's group ID,
                       you can change timestamp.
                   2 - Other users can change timestamp.

                 The default is set from `dmask' option. (If the directory is
                 writable, utime(2) is also allowed. I.e. ~dmask & 022)

                 Normally utime(2) checks current process is owner of
                 the file, or it has CAP_FOWNER capability.  But FAT
                 filesystem doesn't have uid/gid on disk, so normal
                 check is too unflexible. With this option you can
                 relax it.

피해야 할 커뮤니티 검증 및 기타 잠재적인 문제

그래서블로그 게시물"FAT32 설치 소유자만 파일 타임스탬프를 설정할 수 있습니다"라는 확인을 찾았습니다. 나는 이것을 디자인 버그라고 부르고 싶습니다(루트도 이를 할 수 있어야 합니다). 참조 문서에는 거의 그렇게 나와 있지만 이에 대한 패치를 제출하기에는 너무 게으릅니다.

블로그에서는 파일/디렉토리 차이점에 대한 설명도 제공합니다. 불행하게도 이것은 당신이 묘사한 것과 정반대인 것 같습니다. 아래에 설명된 파일/디렉터리 차이점으로 인해 일반 사용자가 디렉터리에서 타임스탬프를 올바르게 설정하지 못하게 해야 한다고 생각합니다. 반면에 여러분이 보여주는 것은 루트인 경우 디렉터리에서는 타임스탬프를 올바르게 설정할 수 있지만 파일에서는 타임스탬프를 설정할 수 없다는 것입니다. 올바른 타임스탬프를 설정하십시오.

제 생각에는 이것이 --modify-window=1rsync 관련 문제에 대한 해결 방법입니다. 따라서 cp파일 복사본을 사용하면 다른 데이터 포인트를 얻을 수 있습니다.

FAT32 마운트 지점의 소유자라도 디렉터리 시간을 안정적으로 설정할 수 없습니다.

이제 원본 파일 타임스탬프를 올바르게 복사할 수 있지만 모든 디렉터리 수정 시간이 rsync 명령을 실행한 시간으로 설정되어 있다는 것을 알았습니다. 이는 전혀 원하는 것이 아닙니다. 빠른 Google 검색을 통해 이 문제에 대한 포럼 게시물이 공개되었습니다.http://ubuntuforums.org/showthread.php?t=886048

이 포럼 게시물에서는 rsync가 서로 다른 것으로 간주하기 전에 파일과 디렉터리 시간이 얼마나 일치해야 하는지에 대해 1초를 제공하는 "--modify-window=1" 옵션을 추가할 것을 제안합니다. 일부에서는 이렇게 하면 원래 디렉터리 타임스탬프가 올바르게 유지된다고 말합니다.

관련 정보