测试删除超过一定年限的文件

测试删除超过一定年限的文件

我有一台运行 Ubuntu 20.04.3 的服务器。此服务器上有一个进程,它tar每天转储一次 MySQL 数据库,然后转储文件以进行备份。

我的目标是编写一个脚本,删除所有超过 30 天的备份。

为了测试这一点,我决定在我的 Macbook(运行 macOS Big Sur)上本地设置一些东西。在我的终端中,我执行以下操作:

  1. 在桌面上创建一个目录来测试我的工作:

    % cd ~
    % mkdir Desktop/testfiles
    % cd Desktop/testfiles
    
  2. 创建了4个文件:

    % touch a.txt b.txt c.txt d.txt
    
  3. 修改 (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保留了今天的时间戳。

  1. 检查(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.txtc.txt-mtime +3会给出a.txtb.txtc.txt

我是不是做错了什么?当我读到https://unix.stackexchange.com/a/112407我的理解是加号(例如+2)是正确的选项,因为在这个例子中,我想要“超过” 2 天的文件。我不要-2除非我误解了,否则我认为减号(例如)在我的处境下是合适的。

我还假设这在我的 Mac 和 Ubuntu 上的 zsh 终端上工作相同。

如果我确实让它发挥作用,我的计划是在 Ubuntu 服务器上使用它:

% find /path/to/files/on/server/* -mtime +30 -exec rm {} \;

但是我不愿意使用它,因为当我尝试在本地找到适当的文件时,它并没有给我我期望的文件。

任何帮助都将不胜感激。

相关内容