반복적으로 충돌이 발생하는 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과 관련하여 예상되는 동작이 생성되지만 일부 파일은 건너뜁니다.
답변1
와 의 차이는 sudo
다음 발췌로 인해 발생할 수 있습니다.문서/파일 시스템/vfat.txt. (대상 파일 시스템의 유형과 ^Wfilesystem 디렉토리를 소유한 사람을 알아야 합니다 vfat
. 이 경우 마운트 옵션에 의해 결정됩니다 vfat
).
어쨌든 파일 시스템 유형의 중요성을 보여주기 때문에 이것을 게시하고 있습니다. 전체적인 결론은Linux에서 FAT를 사용하는 것은 고통스럽습니다(FAT의 rsync에도 특별한 문제가 있습니다)..
나열된 문제 중 적어도 하나가 다른 기본값(아마도 udisks
수동 mount
명령이 아닌 GUI에서 사용되는 값)으로 해결되었을 것이라고 확신합니다. 어떤 경우 에라도Linux 운영 체제의 일부를 FAT에 복사하고 파일 메타데이터에 특정 결과가 필요한 경우 시간을 낭비하고 있는 것입니다.(타임스탬프) 또는 파일 이름. 이 경우 기본 Linux 파일 시스템을 사용해야 하며, 가급적이면 소스 파일 시스템과 동일한 유형을 사용해야 합니다.
또는 단일 파일을 복사하는 대신파일기본 Linux 도구(예: tar
Zip 파일 사용)를 사용하지만 백업용으로 설계됨리눅스*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=1
rsync 관련 문제에 대한 해결 방법입니다. 따라서 cp
파일 복사본을 사용하면 다른 데이터 포인트를 얻을 수 있습니다.
FAT32 마운트 지점의 소유자라도 디렉터리 시간을 안정적으로 설정할 수 없습니다.
이제 원본 파일 타임스탬프를 올바르게 복사할 수 있지만 모든 디렉터리 수정 시간이 rsync 명령을 실행한 시간으로 설정되어 있다는 것을 알았습니다. 이는 전혀 원하는 것이 아닙니다. 빠른 Google 검색을 통해 이 문제에 대한 포럼 게시물이 공개되었습니다.http://ubuntuforums.org/showthread.php?t=886048
이 포럼 게시물에서는 rsync가 서로 다른 것으로 간주하기 전에 파일과 디렉터리 시간이 얼마나 일치해야 하는지에 대해 1초를 제공하는 "--modify-window=1" 옵션을 추가할 것을 제안합니다. 일부에서는 이렇게 하면 원래 디렉터리 타임스탬프가 올바르게 유지된다고 말합니다.