Linux 파일 시스템에서 파일별 보관 비트가 지원되는지 알고 싶습니다.
https://en.m.wikipedia.org/wiki/Archive_bit
ntfs가 아닌 fat이 아닌 ext3과 같은 기본 fs에서 동일한 논리를 가진 것이 필요합니다.
답변1
Linux에는 DOS/Windows 아카이브 비트와 동일한 기능이 없지만 비슷한 것을 만들 수 있습니다. 최신 Linux 시스템 지원사용자 정의 파일 속성, 적어도 ext4 및 btrfs에서는. 당신은 그것을 사용할 수 있습니다getfattr
그것들을 나열하고setfattr
설정하세요. 맞춤 속성은확장된 속성즉, 사용자 네임스페이스에서 이름은 5자로 시작됩니다 user.
.
$ touch foo
$ getfattr foo
$ setfattr -n user.archive -v "$(date +%s -r foo)" foo
$ getfattr -d foo
# file: foo
user.archive="1471478895"
원하는 경우 사용자 정의 속성을 사용할 수 있습니다. 값은 짧은 문자열일 수 있습니다. 사용 가능한 저장 용량은 파일 시스템과 커널 버전에 따라 다르며 수백 바이트 정도가 적당합니다. 여기서는 파일의 타임스탬프를 사용하고 있습니다. 수정하면 실제 타임스탬프가 업데이트되지만 사용자 정의 속성의 복사본은 업데이트되지 않습니다.
기존 파일을 덮어쓰는 대신 파일을 삭제하고 새 버전으로 교체하여 파일을 수정하면 사용자 정의 속성이 사라집니다. 이는 목적에 적합해야 합니다. 속성이 존재하지 않으면 파일을 백업해야 합니다.
Unix 세계의 증분 백업 프로그램은 사용자 정의 속성을 사용하지 않습니다. 그들이 하는 일은 파일의 타임스탬프를 백업의 타임스탬프와 비교하고 파일이 변경된 경우 파일을 백업하는 것입니다. 이는 백업의 실제 상태를 고려하기 때문에 더 안정적입니다. 시스템 상태만을 기반으로 하는 백업은 백업이 사라지거나 속성을 유지하는 동안 발생하는 오류로 인해 파일이 손실될 가능성이 더 높습니다.
답변2
아니요, (직접적으로) 아닙니다.
Linux/Unix 기본 파일 시스템은 각 파일에 대해 여러 타임스탬프(적어도 마지막 수정 시간 mtime
, inode 변경 시간 ctime
및 마지막 액세스(또는 읽기) 시간)를 유지합니다 atime
. 표준 백업 유틸리티는 주로 타임스탬프를 확인하여 파일이 마지막으로 변경된 시기를 확인하여 특정 파일을 증분 백업에 포함할지 여부를 결정합니다. 이는 백업 시스템이 단순히 각 파일의 타임스탬프를 전체 증분 백업과 mtime
비교하기 때문에 보관 비트보다 더 유연합니다. mtime
타임스탬프를 비교하여 모든 전체 백업에서 백업을 실행할 수 있습니다.
증분 백업 파일 세트 계산 이외의 용도로 사용하기 위해 아카이브 비트의 동작을 구체적으로 찾고 있는 경우 수행하려는 작업에 대한 자세한 정보를 제공해야 합니다.
즉, 당신은 할 수 있습니다시뮬레이션명령줄이나 자체 프로그램에서 타임스탬프를 설정할 mtime
수 있으므로 아카이브 비트의 동작은 타임스탬프를 사용합니다 . mtime
예를 들어, (UNIX "epoch") 목적 mtime
에 대해 0
아카이브 비트를 지우는 것과 동일한 의미를 정의한다고 가정합니다. 그런 다음 파일이 수정되면 OS는 이를 mtime
마지막으로 수정된 타임스탬프로 설정합니다(따라서 mtime
더 이상 가 아니며 0
아카이브 비트가 설정된 것처럼 해석할 수 있습니다).
쉘 스크립트 (참고자료 참조 ) 및 다양한 쉘 도구(예: 검색 사용 지원) 를 mtime
사용하여 이를 설정할 수 있습니다 . 자신의 C 또는 다른 언어 프로그램에서 stat(2) 및 utimes(2) 매뉴얼 페이지로 시작하십시오.touch
man touch
find
mtime
답변3
Linux 파일 시스템에는 이러한 속성이 없습니다. XFS는 사용자 정의 속성을 지원하지만 이는 백업에 사용하기에는 매우 비효율적입니다.
일반적인 해결책은 파일 수정 시간( mtime
)에 의존하는 것입니다. 증분 백업을 수행하면 mtime
마지막 백업보다 오래된 파일만 보관됩니다.