欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > linux下獲取文件的創建時間與實戰教程

linux下獲取文件的創建時間與實戰教程

熱門標簽:400電話申請知乎 百度地圖標注尺寸無法顯示 外呼系統虛擬號碼 泰州智能外呼系統排名 長春電銷外呼系統代理商 大連電銷外呼系統運營商 400電話干嘛怎么申請信用卡 代理外呼系統創業 接電話機器人罵人

背景

有時候我們需要獲取文件的創建時間。

例如:

我在研究 《xtrabackup 原理圖》的時候,想通過觀察確認 xtrabackup_log 是最早創建 并且是 最晚保存的文件。我們就需要知道 xtrabackup_logfile 這個文件的創建時間戳和修改時間戳。

復習: Linux關于文件的三個時間戳

Linux 的文件系統保存有三個時間戳,利用 stat 指令查看文件信息可以獲取。他們分別是 ATime、MTime 和 CTime

[root@192-168-199-198 backups]# stat 2.txt 
 File: ‘2.txt'
 Size: 16   Blocks: 8   IO Block: 4096 regular file
Device: 821h/2081d Inode: 15   Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-23 12:12:14.276981038 +0800
Modify: 2019-07-23 12:12:41.415980158 +0800
Change: 2019-07-23 12:12:41.415980158 +0800
 Birth: -

ATime ——文件的最近訪問時間

只要讀取文件,ATime 就會更新,對應的是 stat 命令獲取的 Access 的值。

[root@192-168-199-198 backups]# cat 2.txt #<-- 讀取文件
121231233123123
[root@192-168-199-198 backups]# stat 2.txt 
 File: ‘2.txt'
 Size: 16   Blocks: 8   IO Block: 4096 regular file
Device: 821h/2081d Inode: 15   Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-23 12:22:09.644961733 +0800 #<-- 時間變化了
Modify: 2019-07-23 12:12:41.415980158 +0800
Change: 2019-07-23 12:12:41.415980158 +0800
 Birth: -

MTime ——文件的內容最近修改的時間

當文件進行被寫的時候,CTime 就會更新,對應的是 stat 命令獲取的 Modify 的值。

[root@192-168-199-198 backups]# echo hello_world > 2.txt #<-- 修改文件內容
[root@192-168-199-198 backups]# stat 2.txt 
 File: ‘2.txt'
 Size: 12   Blocks: 8   IO Block: 4096 regular file
Device: 821h/2081d Inode: 15   Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-23 12:22:09.644961733 +0800
Modify: 2019-07-23 12:26:23.466953503 +0800 #<-- 時間變化了
Change: 2019-07-23 12:26:23.466953503 +0800
 Birth: -

這里不要用vi修改文件內容,因為用vi修改文件內容有可能會引起Inode變更,也就是你觀察的文件并不是之前的文件了!這個和vi的原理有關。

CTime ——文件屬性最近修改的時間

當文件的目錄被修改,或者文件的所有者,權限等被修改時,CTime 也就會更新,對應的是 stat 命令獲取的 Change 的值。

[root@192-168-199-198 backups]# chmod 777 2.txt #<-- 修改文件屬性
[root@192-168-199-198 backups]# stat 2.txt 
 File: ‘2.txt'
 Size: 12   Blocks: 8   IO Block: 4096 regular file
Device: 821h/2081d Inode: 15   Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-23 12:22:09.644961733 +0800
Modify: 2019-07-23 12:26:23.466953503 +0800
Change: 2019-07-23 12:30:35.830945320 +0800 #<-- 時間變化了
 Birth: -

Linux 無法獲取文件創建時間?

現在我們知道了Linux有三種時間,ATime、MTime 和 CTime,那么很好奇為什么沒有 CRTime (創建時間) 呢?

對比 Windows 系統 (上圖),Windows 的 NTFS 文件系統里存在三個時間戳,其中就包含了“創建時間”,但在 Linux 的設計哲學上沒有文件“創建時間”這么一說,所以早期版本的ext文件系統不支持文件“創建時間”。但從 ext4 版本開始,文件創建時間存儲在ext4文件系統的inode中,所以 ext4 文件系統使用特殊方法也是可以獲取文件的創建時間的。

也說明了,是否能獲取文件的創建時間,和文件系統是否支持有關。

Linux 上獲取文件創建時間的步驟

CentOS7 Linux系統自帶一個工具,叫做 debugfs,他可以查出 ext4 文件系統上的文件的創建時間。man debugfs 發現工具的描述是 “ext2/ext3/ext4 file system debugger”,所以他是不支持 xfs 文件系統的。

常用的 xfs 文件系統是否支持獲取文件創建時間,還有如何獲取,這個暫時不清楚,需讀者查閱官方文檔

1. 獲取文件的 inode 號

方法一:

[root@192-168-199-198 backups]# stat /backups/2.txt
 File: ‘/backups/2.txt'
 Size: 30   Blocks: 8   IO Block: 4096 regular file
Device: 821h/2081d Inode: 14 #<--- 這個  Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-23 12:49:11.462909146 +0800
Modify: 2019-07-23 12:49:11.462909146 +0800
Change: 2019-07-23 13:08:20.138871900 +0800
 Birth: -

方法二:

[root@192-168-199-198 backups]# ls -i /backups/2.txt
14 /backups/2.txt

這里,我們獲取的 inode 編號是 14。

2. 查找文件所在磁盤路徑

[root@192-168-199-198 backups]# df -h
Filesystem        Size Used Avail Use% Mounted on
/dev/mapper/centos-root  46G  23G  24G 49% /
devtmpfs         3.8G   0 3.8G  0% /dev
tmpfs          3.9G 8.0K 3.9G  1% /dev/shm
tmpfs          3.9G  12M 3.8G  1% /run
tmpfs          3.9G   0 3.9G  0% /sys/fs/cgroup
/dev/sdb1        100G  77G  24G 77% /data2
/dev/sdc1         50G  53M  47G  1% /backups  #<--- 可以看出文件在這里面
/dev/sda1        1014M 142M 873M 14% /boot
tmpfs          781M   0 781M  0% /run/user/0

磁盤路徑為 /dev/sdc1

3. 使用debugfs 查看文件創建時間

[root@192-168-199-198 backups]# debugfs -R 'stat <14>' /dev/sdc1
debugfs 1.42.9 (28-Dec-2013)
Inode: 14  Type: regular  Mode: 0644  Flags: 0x80000
Generation: 737271740  Version: 0x00000000:00000001
User:   0  Group:   0  Size: 30
File ACL: 0  Directory ACL: 0
Links: 1  Blockcount: 8
Fragment: Address: 0  Number: 0  Size: 0
 ctime: 0x5d369644:211c1170 -- Tue Jul 23 13:08:20 2019
 atime: 0x5d3691c7:6e5dbb68 -- Tue Jul 23 12:49:11 2019
 mtime: 0x5d3691c7:6e5dbb68 -- Tue Jul 23 12:49:11 2019
crtime: 0x5d3691c7:6e5dbb68 -- Tue Jul 23 12:49:11 2019
Size of extra inode fields: 28
EXTENTS:
(0):35337

獲取文件創建時間的腳本

鑒于獲取文件創建時間步驟操作有點麻煩 (雖然只有三步 :) )

我這里提供了一個腳本

vi statx

#!/bin/sh

[ $# -ne 1 ] && echo "Usage:   $0 {FILENAME}" && exit 1

INODE=`ls -i $1 |awk '{print $1}'`
FILENAME=$1

#如果傳入參數帶/,則獲取這個傳入參數的目錄路徑并進入目錄
 `echo $FILENAME |grep / 1> /dev/null` && { FPWD=${FILENAME%/*};FPWD=${FPWD:=/};cd ${FPWD};FPWD=`pwd`; } || FPWD=`pwd`

 

array=(`echo ${FPWD} | sed 's@/@ @g'`)
array_length=${#array[@]}

for ((i=${array_length};i>=0;i--))
do
 unset array[$i]
 SUBPWD=`echo " "${array[@]} | sed 's@ @/@g'`
 DISK=`df -h |grep ${SUBPWD}$ |awk '{print $1}'`
 [[ -n $DISK ]] && break
done

 

#不是ext4就退出
[[ "`mount |grep ${DISK} |awk '{print $5}'`" != "ext4" ]] && { echo ${DISK} is not mount on type ext4! Only ext4 file system support!;exit 2; }

debugfs -R "stat <${INODE}>" ${DISK}

使用:

chmod +x statx
mv statx /usr/sbin/statx

[root@192-168-199-198 backups]# statx 2.txt
debugfs 1.42.9 (28-Dec-2013)
Inode: 14  Type: regular  Mode: 0644  Flags: 0x80000
Generation: 737271740  Version: 0x00000000:00000001
User:   0  Group:   0  Size: 30
File ACL: 0  Directory ACL: 0
Links: 1  Blockcount: 8
Fragment: Address: 0  Number: 0  Size: 0
 ctime: 0x5d369644:211c1170 -- Tue Jul 23 13:08:20 2019
 atime: 0x5d36bb8f:56eb1e70 -- Tue Jul 23 15:47:27 2019
 mtime: 0x5d3691c7:6e5dbb68 -- Tue Jul 23 12:49:11 2019
crtime: 0x5d3691c7:6e5dbb68 -- Tue Jul 23 12:49:11 2019
Size of extra inode fields: 28
EXTENTS:
(0):35337

!!!請謹慎在生產環境使用,shell腳本沒有做太多的異常處理,不支持管道,不支持目錄也沒有經過大量的測試

實戰
我們回過頭來,用這個方法,確認《xtrabackup 原理圖》是否準確。

我們需要驗證的是:

xtrabackup_log 是最早創建 并且是 最晚保存的文件

1. 創建備份

DATE=`date "+%Y%m%d%H%M%S"`
xtrabackup -uroot -proot \

 -S /tmp/mysql3306.sock \

 --backup \

 --target-dir=/backups/$DATE

2. 查找所有備份文件的crtime

cd /backups/$DATE
>/tmp/1.txt
>/tmp/2.txt
find . -type f >/tmp/1.txt

for i in `cat /tmp/1.txt`
do
 { echo -n $i" ";statx $i 2>/dev/null |grep crtime |awk '{print $7}'; } >>/tmp/2.txt
done

cat /tmp/2.txt |sort -k2 |less
###以下為輸出###
./ibdata1 23:32:59
./xtrabackup_logfile 23:32:59 #<---可以看出這個文件是最早創建的
./mysql/engine_cost.ibd 23:33:00
./mysql/gtid_executed.ibd 23:33:00
./mysql/help_category.ibd 23:33:00
./mysql/help_keyword.ibd 23:33:00
./mysql/help_relation.ibd 23:33:00
./mysql/help_topic.ibd 23:33:00
./mysql/innodb_index_stats.ibd 23:33:00
./mysql/innodb_table_stats.ibd 23:33:00
./mysql/plugin.ibd 23:33:00
./mysql/server_cost.ibd 23:33:00
./mysql/servers.ibd 23:33:00
./mysql/slave_master_info.ibd 23:33:00
./mysql/slave_relay_log_info.ibd 23:33:00
./mysql/slave_worker_info.ibd 23:33:00
./mysql/time_zone.ibd 23:33:00
./mysql/time_zone_leap_second.ibd 23:33:00
...
./zabbix/trigger_tag.frm 23:33:09
./zabbix/users.frm 23:33:09
./zabbix/users_groups.frm 23:33:09
./zabbix/usrgrp.frm 23:33:09
./zabbix/valuemaps.frm 23:33:09
./zabbix/widget_field.frm 23:33:09
./zabbix/widget.frm 23:33:09

3. 查找所有備份文件的mtime

>/tmp/1.txt
>/tmp/2.txt
find . -type f >/tmp/1.txt

for i in `cat /tmp/1.txt`
do
 { echo -n $i" ";statx $i 2>/dev/null |grep mtime |awk '{print $7}'; } >>/tmp/2.txt
done

cat /tmp/2.txt |sort -k2 |less
###以下為輸出###
./ibdata1 23:33:00
./mysql/engine_cost.ibd 23:33:00
./mysql/gtid_executed.ibd 23:33:00
./mysql/help_category.ibd 23:33:00
./mysql/help_keyword.ibd 23:33:00
./mysql/help_relation.ibd 23:33:00
./mysql/help_topic.ibd 23:33:00
./mysql/innodb_index_stats.ibd 23:33:00
./mysql/innodb_table_stats.ibd 23:33:00
./mysql/plugin.ibd 23:33:00
...
./xtrabackup_logfile 23:33:09 #<---可以看出這個文件是最后修改和保存的
./zabbix/acknowledges.frm 23:33:09
./zabbix/actions.frm 23:33:09
...
./zabbix/users_groups.frm 23:33:09
./zabbix/usrgrp.frm 23:33:09
./zabbix/valuemaps.frm 23:33:09
./zabbix/widget_field.frm 23:33:09
./zabbix/widget.frm 23:33:09

最后,我們通過文件的創建時間和修改時間,實戰地驗證了《xtrabackup 原理圖》的第一和第七步順序的正確性。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

標簽:臺灣 中衛 興安盟 大慶 長治 安陽 雅安 清遠

巨人網絡通訊聲明:本文標題《linux下獲取文件的創建時間與實戰教程》,本文關鍵詞  linux,下,獲取,文件,的,創建,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《linux下獲取文件的創建時間與實戰教程》相關的同類信息!
  • 本頁收集關于linux下獲取文件的創建時間與實戰教程的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美亚洲图片小说| 综合欧美亚洲日本| 青青国产91久久久久久| 挪威xxxx性hd极品| 欧美日韩www| 亚洲高清中文字幕| 日韩成人av影院| 欧美精品v国产精品v日韩精品 | 好吊操视频这里只有精品| 色老汉av一区二区三区| ●精品国产综合乱码久久久久| 丁香啪啪综合成人亚洲小说| 九九热最新地址| 国产精品久久久一本精品 | 免费高清在线观看电视| 亚洲国产精品成人综合色在线婷婷| 国产一区二区电影| 最新黄色av网址| 国产精品乱人伦| 99热精品国产| 欧美日韩在线一区二区| 午夜精品爽啪视频| 国产又爽又黄无码无遮挡在线观看| 日韩午夜av电影| 精品一区二区日韩| 欧美性生交大片| 亚洲视频电影在线| 日批视频免费看| 日韩一级二级三级| 国产一区二区三区精品欧美日韩一区二区三区 | 手机看片日韩av| 国产婷婷精品av在线| 成人性生交大片免费看视频在线 | 国产乱子伦视频一区二区三区| 国产精品1区2区3区4区| 亚洲欧美一区二区在线观看| 色欲欲www成人网站| 日韩欧美区一区二| 国产黄色精品视频| 日本道色综合久久| 婷婷成人综合网| 91成人在线免费视频| 国产精品嫩草影院com| 18深夜在线观看免费视频| 日韩一区和二区| 国产精品一区二区91| 91福利在线观看| 日本伊人色综合网| 99成人在线观看| 亚洲一区在线观看视频| 亚洲色成人网站www永久四虎| 国产精品另类一区| 性色av浪潮av| 久久亚洲一区二区三区四区| aaa国产一区| 日韩精品一区在线| 成人国产视频在线观看| 6080午夜不卡| 国产成人免费av在线| 5858s免费视频成人| 国产河南妇女毛片精品久久久| 欧美日韩性生活| 国产精品自拍三区| 欧美老年两性高潮| 国产99久久久国产精品免费看 | 免费日本视频一区| 欧美黄色aaa| 青娱乐精品视频| 91久久精品一区二区三区| 蜜桃久久精品一区二区| 色一情一乱一乱一91av| 蜜臀va亚洲va欧美va天堂| 色视频一区二区| 久久精品国产免费看久久精品| 色综合久久九月婷婷色综合| 蜜桃视频免费观看一区| 欧美日韩在线一区二区| 风间由美一区二区av101| 日韩欧美综合在线| 国产黄色一区二区三区| 国产亚洲精品精华液| xxxx黄色片| 亚洲欧美偷拍三级| 91ts人妖另类精品系列| 日韩va欧美va亚洲va久久| 色噜噜狠狠色综合中国| 国产麻豆精品在线观看| 欧美一级久久久| 91麻豆精品视频| 国产精品三级视频| 性欧美13一14内谢| 午夜精品福利一区二区蜜股av | 精品国产视频在线观看| 精品在线观看免费| 5566中文字幕一区二区电影| 99热这里都是精品| 国产精品女主播在线观看| 中文字幕第20页| 欧美aaa在线| 欧美精品久久一区| 91捆绑美女网站| 国产精品护士白丝一区av| 谁有免费的黄色网址| 五月天视频一区| 欧美日韩亚洲综合在线| 99久久精品免费观看| 国产精品二区一区二区aⅴ污介绍| 日韩福利在线视频| 久久aⅴ国产欧美74aaa| 欧美不卡一区二区三区四区| 毛茸茸free性熟hd| 亚洲在线中文字幕| 日本韩国欧美三级| 97精品久久久久中文字幕 | 中文成人av在线| 亚洲女人毛茸茸高潮| 韩日欧美一区二区三区| www日韩大片| 极品久久久久久久| 国精产品一区一区三区mba视频| 欧美成人一区二区三区在线观看| 在线观看国产三级| 日韩av不卡一区二区| 欧美一区二区三区思思人| 中文字幕精品久久久| 日韩精品视频网| 日韩精品一区二区三区在线 | 国产乱子伦一区二区三区国色天香| 久久伊人蜜桃av一区二区| 四虎国产精品成人免费入口| 久久精品国产精品亚洲综合| 久久这里只有精品视频网| 人人爽人人爽人人片| 精品一区二区免费| 国产欧美一区二区精品久导航| 亚洲一级理论片| 高清成人免费视频| 国产精品福利一区二区| 91黄色在线观看| 免费在线观看日韩av| 香蕉成人啪国产精品视频综合网| 制服丝袜一区二区三区| 免费在线观看成年人视频| 老色鬼精品视频在线观看播放| 久久色视频免费观看| 潘金莲一级黄色片| 91女厕偷拍女厕偷拍高清| 亚洲国产视频在线| 欧美草草影院在线视频| 亚洲熟女少妇一区二区| youjizz久久| 亚洲成人tv网| 精品粉嫩超白一线天av| 国产美女高潮视频| 97精品国产97久久久久久久久久久久| 一区二区三区欧美亚洲| 欧美一区二区视频在线观看| 欧美做受xxxxxⅹ性视频| 国产精品原创巨作av| 亚洲人成网站影音先锋播放| 欧美老女人第四色| 亚洲精品91在线| 成人午夜视频福利| 午夜精品一区二区三区免费视频| 精品国精品国产尤物美女| 免费在线观看黄色小视频| 91视视频在线直接观看在线看网页在线看 | 97超碰免费在线观看| 日日夜夜精品视频免费| 久久久久国产精品厨房| 在线观看日韩电影| 日韩一级视频在线观看| 成人久久久精品乱码一区二区三区| 亚洲一区二区三区在线看| 久久嫩草精品久久久精品| 校园春色 亚洲| 国产人妻人伦精品1国产丝袜| 国产成人在线网站| 亚洲成人资源网| 中文字幕第一页久久| 欧美久久久久久蜜桃| 一级免费黄色录像| 日本人添下边视频免费| 国产成人精品网址| 天堂av在线一区| 国产精品久久毛片av大全日韩| 欧美精品色综合| 一级黄色片日本| 久久久久9999| a美女胸又www黄视频久久| 蜜桃视频免费观看一区| 一区二区三区在线免费视频| 久久众筹精品私拍模特| 欧美午夜电影在线播放| 中国特黄一级片| 97人妻精品一区二区三区免费| 成人看片黄a免费看在线| 久久草av在线| 亚洲国产成人av网| 自拍偷拍欧美精品|