Linux: 查找新添加的文件

Linux: Finding Newly Added Files

我正在尝试获取 'newly' 添加到 Fedora 系统的文件的备份。文件可以通过 Windows Samba 共享进行复制,并且似乎保留了原始创建的时间戳。但是,因为它保留了这个时间戳,所以我在识别哪些文件是新添加到系统中时遇到了问题。

目前,我能想到的唯一方法是在特定时间拥有系统上所有文件的主列表快照。然后,当我执行备份时,我将之前的快照与当前快照进行比较。它会检测从系统中删除的文件,但它似乎过多,我在想必须有一种更简单的方法来备份新添加的文件。

特里

尝试使用查找。像这样:

find . -ctime -10

这将为您提供一个文件和目录列表,从当前目录开始,在过去 10 天内其状态发生了变化。

示例:

我的下载目录如下所示:

kobus@akira:~/Downloads$ ll
total 2025284
drwxr-xr-x  4 kobus kobus       4096 Nov  4 11:25 ./
drwxr-xr-x 41 kobus kobus       4096 Oct 30 09:26 ../
-rw-rw-r--  1 kobus kobus    8042383 Oct 28 14:08 apache-maven-3.3.3- bin.tar.gz
drwxrwxr-x  2 kobus kobus       4096 Oct 14 09:55 ELKImages/
-rw-rw-r--  1 kobus kobus 1469054976 Nov  4 11:25 Fedora-Live-Workstation-x86_64-23-10.iso
-rw-------  1 kobus kobus     351004 Sep 21 14:07 GrokConstructor-master.zip
drwxrwxr-x 11 kobus kobus       4096 Jul 11  2014 jboss-eap-6.3/
-rw-rw-r--  1 kobus kobus  183399393 Oct 19 16:26 jboss-eap-6.3.0-installer.jar
-rw-rw-r--  1 kobus kobus  158177216 Oct 19 16:26 jboss-eap-6.3.0.zip
-rw-rw-r--  1 kobus kobus   71680110 Oct 13 13:51 jre-8u60-linux-x64.tar.gz
-rw-r--r--  1 kobus kobus       4680 Oct 12 12:34 nginx-release-centos-7-0.el7.ngx.noarch.rpm
-rw-r--r--  1 kobus kobus    3479765 Oct 12 14:22 ngx_openresty-1.9.3.1.tar.gz
-rw-------  1 kobus kobus   16874455 Sep 15 16:49 Oracle_VM_VirtualBox_Extension_Pack-5.0.4-102546.vbox-extpack
-rw-r--r--  1 kobus kobus    7505310 Oct  6 10:29 sublime_text_3_build_3083_x64.tar.bz2
-rw-------  1 kobus kobus   41467245 Sep  7 10:37 tagspaces-1.12.0-linux64.tar.gz
-rw-rw-r--  1 kobus kobus   42658300 Nov  4 10:14 tagspaces-2.0.1-linux64.tar.gz
-rw-------  1 kobus kobus   70046668 Sep 15 16:49 VirtualBox-5.0-5.0.4_102546_el7-1.x86_64.rpm

这是找到的内容 returns:

kobus@akira:~/Downloads$ find . -ctime -10
.
./tagspaces-2.0.1-linux64.tar.gz
./apache-maven-3.3.3-bin.tar.gz
./Fedora-Live-Workstation-x86_64-23-10.iso
kobus@akira:~/Downloads$ 

大多数unices没有文件创建时间的概念。你不能让 ls 打印它,因为没有记录信息。如果您需要创建时间,请使用版本控制系统:将创建时间定义为签入时间。

如果您的 unix 变体有创建时间,请查看其文档。例如,在 Mac OS X(我知道的唯一示例¹)上,使用 ls -tU。 Windows 也存储创建时间,但它并不总是暴露给 unix 实用程序的端口,例如 Cygwin ls 没有显示它的选项。 stat 实用程序可以显示创建时间,在 GNU 实用程序中称为“出生时间”,因此在 Cygwin 下,您可以使用 stat -c '%W %n' * | 显示按出生时间排序的文件。排序 -k1n.

注意 ctime (ls -lc) 不是文件创建时间,它是 inode 更改时间。每当文件发生任何变化(内容或元数据)时都会更新 inode 更改时间,除了 ctime 不会在仅读取文件时更新(即使 atime 已更新)。特别是,ctime 总是比 mtime(文件内容修改时间)更新,除非 mtime 已明确设置为将来的日期。


"Newly added files, Fedora" : 下面的示例将显示一个包含日期和时间的列表。

例如,所有已安装的软件包:$ rpm -qa --last

例如,最新的 100 个包:$ rpm -qa --last | head -100

例如,创建一个文本文件:$ rpm -qa --last | head -100 >> last-100-packages.txt