我有一台运行 Ubuntu 20.04.3 的服务器。此服务器上有一个进程,它tar
每天转储一次 MySQL 数据库,然后转储文件以进行备份。
我的目标是编写一个脚本,删除所有超过 30 天的备份。
为了测试这一点,我决定在我的 Macbook(运行 macOS Big Sur)上本地设置一些东西。在我的终端中,我执行以下操作:
在桌面上创建一个目录来测试我的工作:
% cd ~ % mkdir Desktop/testfiles % cd Desktop/testfiles
创建了4个文件:
% touch a.txt b.txt c.txt d.txt
修改 (2) 中创建的文件,使每个文件的创建/修改时间戳都不同。这实际上意味着每个文件都是在不同的日期创建的,例如,
touch -t 202201162300 b.txt
意味着是b.txt
在 2022 年 1 月 16 日创建/修改的。我运行的命令如下:% touch -t 202201152300 a.txt % touch -t 202201162300 b.txt % touch -t 202201172300 c.txt
该文件d.txt
保留了今天的时间戳。
检查(3)是否起作用:
% ls -l -rw-r--r-- 1 a.user staff 0 15 Jan 23:00 a.txt -rw-r--r-- 1 a.user staff 0 16 Jan 23:00 b.txt -rw-r--r-- 1 a.user staff 0 17 Jan 23:00 c.txt -rw-r--r-- 1 a.user staff 0 18 Jan 15:45 d.txt
因此,根据(4),每个文件都是在不同的日期创建的。
如果我切换回我的主目录cd ~
并运行以下任何命令,则不会有任何输出:
% find Desktop/testfiles/* -mtime +2
% find Desktop/testfiles/* -mtime +3
我假设这些的输出分别是找到 2 天和 3 天前创建的文件。所以我假设的输出是 会-mtime +2
给出b.txt
和c.txt
而-mtime +3
会给出a.txt
,b.txt
和c.txt
。
我是不是做错了什么?当我读到https://unix.stackexchange.com/a/112407我的理解是加号(例如+2
)是正确的选项,因为在这个例子中,我想要“超过” 2 天的文件。我不要-2
除非我误解了,否则我认为减号(例如)在我的处境下是合适的。
我还假设这在我的 Mac 和 Ubuntu 上的 zsh 终端上工作相同。
如果我确实让它发挥作用,我的计划是在 Ubuntu 服务器上使用它:
% find /path/to/files/on/server/* -mtime +30 -exec rm {} \;
但是我不愿意使用它,因为当我尝试在本地找到适当的文件时,它并没有给我我期望的文件。
任何帮助都将不胜感激。