atime, mtime 및 ctime에 대한 Linux 파일 타임스탬프 설명

"변경"이 "수정"을 의미하지 않는 경우는 언제입니까? Linux 파일의 타임스탬프에 관해 이야기할 때. 이 가이드에서는 시스템이 업데이트하는 방법과 직접 수정하는 방법을 설명합니다.

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

atime, mtime, ctime의 차이점

모든 Linux 파일에는 액세스 타임스탬프(atime), 수정된 타임스탬프(mtime), 변경된 타임스탬프(ctime)의 세 가지 타임스탬프가 있습니다.

액세스 타임스탬프는 파일을 마지막으로 읽은 시간입니다. 이는 누군가가 파일 내용을 보거나 파일의 일부 값을 읽기 위해 프로그램을 사용했음을 의미합니다. 파일에 수정되거나 추가된 내용이 없습니다. 데이터는 참조되지만 변경되지 않습니다.

수정된 타임스탬프는 파일 내용이 마지막으로 수정된 시간을 나타냅니다. 프로그램이나 프로세스가 파일을 편집하거나 조작합니다. "수정됨"은 파일 내의 내용이 수정 또는 삭제되었거나 새 데이터가 추가되었음을 의미합니다.

변경된 타임스탬프는 파일 내용의 변경 사항을 나타내지 않습니다. 오히려 파일과 관련된 메타데이터가 변경된 시점이다. 예를 들어, 파일 권한이 변경되면 변경된 타임스탬프가 업데이트됩니다.

표준 Linux ext4 파일 시스템은 내부 파일 시스템 구조에 파일 생성 타임스탬프를 위한 공간도 할당하지만 아직 구현되지 않았습니다. 때로는 이 타임스탬프가 채워지지만 그 안의 값을 신뢰할 수 없는 경우도 있습니다.

자세한 타임스탬프

Linux 타임스탬프에는 날짜와 시간 대신 숫자가 포함됩니다. 이 숫자는 초 전의 숫자입니다. 유닉스 시대, 00년 00월 00일 자정(1:1970:XNUMX)이었습니다. 협정 세계시(UTC). Linux 타임스탬프에서는 윤초가 무시되므로 실시간과는 전혀 다릅니다.

Linux는 타임스탬프를 표시해야 할 때 초를 날짜와 시간으로 변환합니다. 이렇게 하면 인간이 이해하기가 더 쉬워집니다. 컴퓨터가 파일을 보고 있는 위치와 시간대는 컴퓨터에게 초 수를 날짜와 시간으로 변환하도록 지시합니다. 또한 해당 월이 올바른 언어로 되어 있는지 확인합니다.

그렇다면 타임스탬프에는 몇 초를 저장할 수 있습니까? 많이 - 정확히는 2,147,483,647개입니다. 이것은 큰 숫자이지만 충분합니까? 이를 Unix 시대에 추가한 다음 날짜와 시간으로 변환하면 19년 2038월 03일 화요일 오전 14:07:XNUMX이 됩니다. 그 전에는 타임스탬프에 대해 다른 시스템이 필요합니다.

타임스탬프 표시

-l(longlist) 옵션을 ls와 함께 사용하면 아래와 같이 수정된 타임스탬프를 볼 수 있습니다.

ls -l dp.c

액세스 타임스탬프를 보려면 다음과 같이 -lu(access-time) 옵션을 사용합니다.

ls -lu dp.c

마지막으로 변경 타임스탬프를 보려면 -lc(변경 시간) 옵션을 사용할 수 있습니다. 다음을 작성하세요.

ls -lc dp.c

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

위 타임스탬프는 파일 내용이 21년 2019월 20일에 마지막으로 수정되었음을 보여줍니다. 파일이 2020년 XNUMX월 XNUMX일에 다른 컴퓨터에서 이 컴퓨터로 복사되었고 두 타임스탬프가 모두 해당 시점에 업데이트되었기 때문에 액세스 및 변경 타임스탬프는 동일합니다.

또한 읽기:  사용자 지정 Linux 배포판을 쉽게 만드는 5가지 도구

보다 모든 타임스탬프를 한 번에, 다음과 같이 stat 명령을 사용하십시오.

통계 dp.c

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

시간대는 화면 하단에 나열됩니다. 보시다시피 매우 정확한 초 구성 요소가 있습니다. 각 타임스탬프 끝에 -0500 또는 -0400도 표시됩니다.

이는 시간대 오프셋입니다. 파일 시스템은 UTC 타임스탬프를 기록하고 통계에 표시될 때 이를 현지 시간대로 변환합니다. 이 기사를 조사하는 데 사용한 컴퓨터는 미국 동부 표준시(EST) 지역에 있는 것처럼 구성되었습니다.

이 시간대는 동부 표준시가 적용되는 협정 세계시(UTC)보다 2019시간 늦습니다. 그러나 동부 일광 절약 시간(EDT)이 적용되는 경우 협정 세계시(UTC)보다 XNUMX시간 늦습니다. XNUMX년 XNUMX월 수정된 타임스탬프가 변경되면서 미국 동부 표준시가 적용되었습니다. 그렇기 때문에 타임스탬프 중 두 개에는 XNUMX시간 오프셋이 있지만 편집된 버전에는 XNUMX시간 오프셋이 있습니다.

오프셋과 시간대는 어디에도 저장되지 않습니다. 이러한 값을 보유하기 위해 할당된 inode 및 파일 시스템 공간이 없습니다. 타임스탬프(항상 UTC), 파일을 보는 컴퓨터의 현지 시간대, 일광 절약 시간 적용 여부를 사용하여 이를 빠르게 계산해야 합니다.

파일 생성 날짜용으로 예약된 '생성' 타임스탬프도 표시됩니다. 이는 구현되지 않았으며 타임스탬프 대신 하이픈 "-"이 표시됩니다.

타임스탬프 변경

원하는 경우 파일의 타임스탬프를 변경할 수 있습니다. touch 명령을 사용하여 액세스 또는 수정된 타임스탬프를 변경할 수 있습니다. 아니면 둘다:

터치 -a dp.c

새로운 액세스 타임스탬프를 설정하려면 -a(액세스 시간) 옵션을 사용할 수 있습니다. 이 명령은 액세스 타임스탬프를 컴퓨터의 현재 시간으로 설정합니다.

통계 dp.c

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

예상대로 액세스 타임스탬프가 변경되었습니다. 그러나 변경된 타임스탬프도 업데이트되었습니다. 정상입니다.

수정된 타임스탬프를 변경하려면 -m(수정된 시간) 옵션을 사용할 수 있습니다.

터치 -m dp.c
통계 dp.c

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

이번에 수정 및 변경된 타임스탬프가 업데이트되었습니다.

타임스탬프와 수정된 액세스를 동시에 변경하려면 -d(날짜) 옵션을 사용할 수 있습니다. 시간과 날짜도 지정할 수 있습니다. 타임스탬프를 현재까지만 변경할 수는 없습니다.

다음 명령을 사용하여 액세스 및 수정된 타임스탬프를 10년 30월 45일 15:2020:XNUMX로 설정합니다.

터치 -d "2020-01-15 10:30:45" dp.c
통계 dp.c

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

이제 액세스 및 수정된 타임스탬프를 과거 날짜로 설정했습니다. 변경된 타임스탬프도 컴퓨터의 현재 시간으로 업데이트됩니다.

한 파일의 타임스탬프를 다른 파일의 타임스탬프 값으로 설정하려면 아래와 같이 -r(참조) 옵션을 사용할 수도 있습니다.

터치 dp.c -r dice_words.sl3
통계 dp.c

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

그 후에는 -0400과 -0500 타임스탬프가 혼합되어 시작한 곳으로 거의 돌아왔습니다.

또한 읽기:  Linux Kernel 6.8에는 향후 기능이 포함되어 있습니다.

변수 타임스탬프에만 영향을 미치는 작업을 수행해 보겠습니다. chmod 명령을 사용하여 실행 파일을 부여합니다. 모든 사용자에 대한 실행 권한:

chmod +x dp
통계 DP

변경된 타임스탬프만 업데이트되었습니다. 이는 파일 자체가 변경되지 않았으며, 액세스되거나 수정되지 않았기 때문입니다. 그러나 파일에 대한 메타데이터가 변경되었습니다.

파일 시스템은 타임스탬프를 어떻게 업데이트합니까?

파일 시스템이 설치되면 해당 파일 시스템이 실행되는 방법이나 상호 작용하는 방법을 지정하는 데 사용할 수 있는 옵션이 있습니다. 이는 부팅 시 읽고 처리되는 /etc/fstab 파일에 저장됩니다. 액세스 타임스탬프를 업데이트하는 데 사용해야 하는 시스템을 지정하는 옵션을 설정할 수도 있습니다.

가장 인기 있는 옵션은 다음과 같습니다.

strictatime: 이 옵션은 파일에 액세스할 때마다 파일 액세스 타임스탬프를 업데이트합니다. 이 접근 방식과 관련된 추가 비용이 있지만 일부 서버는 이 방식을 통해 이점을 얻을 수 있습니다. 데스크톱이나 노트북 컴퓨터에 비해 장점이 거의 없습니다.
noatime(no atime): 이 옵션은 파일 및 디렉터리에 대한 액세스 타임스탬프 업데이트를 완전히 비활성화합니다. 그러나 수정된 ​​타임스탬프는 업데이트됩니다.
nodiratime(dir atime 없음): 이 옵션은 업데이트할 파일의 타임스탬프에 대한 액세스를 허용하지만 디렉터리에 대해서는 이를 비활성화합니다.
relatime: 이 옵션은 액세스 타임스탬프가 24시간 이상 지났거나 이전 타임스탬프가 현재 수정되거나 변경된 타임스탬프보다 오래된 경우에만 업데이트합니다. 이는 액세스 타임스탬프를 자주 업데이트하거나 전혀 업데이트하지 않는 것 사이에서 균형을 잘 유지합니다.
이 컴퓨터의 /etc/fstab 파일을 살펴보고 어떤 옵션이 설정되어 있는지 살펴보겠습니다.

덜 / etc / fstab

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

/etc/fstab 파일은 아래와 같이 나타납니다.

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

래핑이 없는 파일 내용은 다음과 같습니다.

# /etc/fstab: 정적 파일 시스템 정보.
#
# 'blkid'를 사용하여 범용 고유 식별자를 인쇄합니다.
#장치; 장치 이름을 지정하는 보다 강력한 방법으로 UUID=와 함께 사용할 수 있습니다.
# 디스크를 추가하고 제거해도 작동합니다. fstab(5)을 참조하십시오.
#
# <파일 체계> <마운트 포인트> <유형> <옵션> <덤프> <패스>
# / 설치 중 / dev / sda1에있었습니다.
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 오류=remount-ro 0 1 /swapfile 없음 스왑 sw 0 0

항목은 두 개뿐입니다. 그 중 하나는 스왑 파일이므로 무시할 수 있습니다. 다른 하나는 파일 시스템( / )의 루트에 설치되며 설치 시 /dev/sda1 장치에 있었습니다. 이것은 첫 번째 하드 드라이브의 첫 번째 파티션이며 ext4 파일 시스템을 포함합니다.

여기에 전달된 유일한 옵션은 오류=remount-ro입니다. 이는 이 파일 시스템을 읽기-쓰기 파일 시스템으로 마운트하려고 할 때 오류가 있는 경우 운영 체제에 읽기 전용 시스템으로 다시 마운트하도록 지시합니다.

따라서 액세스 타임스탬프를 처리하는 방법에 대한 언급이 없습니다. 더 깊이 파고들어 /proc/mounts가 우리에게 무엇을 말해 줄 수 있는지 확인해 보겠습니다. grep을 통해 /proc/mounts의 출력을 연결합니다. 검색 문자열은 “sda", 하드 디스크 식별자.

또한 읽기:  악성 USB 드라이브로부터 Linux 컴퓨터를 보호하는 방법

우리는 다음을 작성합니다:

고양이 /proc/mounts | 그렙 "sda"

atime, mtime, ctime - %categories에 대한 Linux 파일 타임스탬프 설명

이제 다음 옵션이 표시됩니다.

rw: 파일 시스템이 읽기-쓰기 파일 시스템으로 마운트됩니다.
relatime: 파일 시스템은 "상대 시간" 시스템을 사용하여 액세스 타임스탬프를 업데이트합니다.
이것은 어디에서 왔습니까? 링크 차트는 다음과 같은 상황에서 사용됩니다.

기본 옵션 /etc/fstab을 사용하는 경우.
상대 시간 /etc/fstab을 사용할 때.
/etc/fstab의 액세스 타임스탬프 옵션이 사용되지 않고 Linux 커널 2.6.30 이상을 사용하는 경우.
ext4 파일 시스템에 대한 /etc/fstab 항목은 액세스 타임스탬프 업데이트를 위한 옵션을 지정하지 않았으므로 Linux는 합리적인 선택을 하고 relatime을 사용했습니다.

타임스탬프가 중요합니다

타임스탬프를 사용하면 파일이 언제 액세스, 수정 또는 변경되었는지 쉽게 알 수 있습니다. 그러나 더 중요한 것은 소프트웨어를 백업하고 동기화하여 백업해야 하는 파일을 식별하는 방법을 제공한다는 것입니다.

타임스탬프를 조작하는 기능은 프로그램이 파일이나 파일 그룹을 포함하거나 무시하도록 강제로 설득해야 할 때 유용합니다.

리눅스 명령
파일 타르·pv·방법·전술·chmod를·GREP ·diff·SED·ar·사람·PUSHD·popd를·fsck·testdisk·서열·fd·Pandoc·cd·$ PATH·AWK·어울리다·jq··유니크·저널·꼬리·스탯·ls·fstab·에코·적게·을 chgrp·chown하지·회전·보이·문자열·유형·이름 변경·지퍼·지퍼를 열다·마운트·umount·설치·fdisk·mkfs·rm·rmdir·rsync·df·gpg·vi·나노·mkdir·du·ln·패치·변하게 하다·rclone·조각·막달레나·scp·gzip을·Chattr·절단·발견·마스크·wc· tr
프로세스 별명·화면·상단·좋은·르니스·진행·추적하다·시스템·tmux··history·at·일괄·비어 있는·어느·dmesg에··유머·ps·chroot·xargs·청각 장애·분홍색을 띤·이소프·vmstat·시간 제한···죽이기··sudo는·su·시간·그룹 추가·유머·그룹·lshw·종료·재부팅·정지·전원 끄기·passwd·lscpu·crontab을·데이터·bg·fg·피도프·안돼·피맵
네트워킹 NETSTAT··traceroute·ip·ss·후이즈·실패한 2ban·브 몬·파다·손가락·nmap·FTP··wget·누구·WHOAMI·w·iptables에·ssh-keygen·ufw·아르핑·방화벽
당신은 또한 좋아할 수 있습니다