我对 Linux 完全是菜鸟,但我开始掌握它了。我有一台 Ubuntu Server 16.04,运行 FTP 服务器来备份安全视频文件。这些文件将存储在以下文件夹中:/home/securityfolder1
、/home/securityfolder2
等/home/securityfolder3
。
请注意,每个securityfolderN
都是不同的用户。
因为我不想我的硬盘一直处于满状态,所以我想每天删除这些文件夹中超过 7 天的文件。
答案1
/home
首先,此命令将查找并删除名称以 开头的任何子目录中所有超过 7 天的文件securityuser
:
find /home/securityuser* -mtime +6 -type f -delete
您需要的是-mtime +6
而不是+7
因为-mtime
计算的是 24 小时周期。如(以相同的方式工作 )-atime
部分所述:man find
-mtime
-atime n
File was last accessed n*24 hours ago. When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
因此,要查找 7 天或更早之前修改的文件,您需要查找 6 天以上之前修改的文件,因此-mtime +6
。
下一步是让此命令每天运行一次。由于每个用户securityuserN
都是不同的用户(您可能需要重新考虑该设置,这会使一切变得更加复杂),因此必须以 root 身份运行此命令。因此,编辑/etc/crontab
:
sudo nano /etc/crontab
并添加这一行:
@daily root find /home/securityuser* -mtime +6 -type f -delete
这将find
每天运行一次命令并删除文件。
答案2
据我所知:
尝试find
这样的命令:
find ./dirc/* -mtime +6 -type f -delete
./dirc/* : is your directory (Path)
-mtime +6 : modified more than 6 days ago (therefore, at least 7 days ago)
-type f : only files
-delete : no surprise. Remove it to test before like rm