Jac*_*cco 20 delete cron automation files
我是 linux 的完全菜鸟,但我开始掌握它的窍门。我有一台运行 FTP 服务器的 Ubuntu Server 16.04 来备份安全视频文件。该文件将被存储在文件夹一样:/home/securityfolder1,/home/securityfolder2,/home/securityfolder3等。
请注意,每个securityfolderN用户都是不同的用户。
因为我不希望我的硬盘驱动器一直都满,所以我想每天删除这些文件夹中超过 7 天的文件。
ter*_*don 35
首先,此命令将查找并删除/home名称以 开头的任何子目录中超过 7 天的所有文件securityuser:
find /home/securityuser* -mtime +6 -type f -delete
Run Code Online (Sandbox Code Playgroud)
您需要-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.
Run Code Online (Sandbox Code Playgroud)
因此,要查找 7 天或更多天前修改过的文件,您需要查找 6 天前修改过的文件,因此-mtime +6.
下一步是让这个命令每天运行一次。由于每个securityuserN用户都是不同的用户(您可能需要重新考虑该设置,它使一切变得更加复杂),因此必须以 root 身份运行。所以,编辑/etc/crontab:
sudo nano /etc/crontab
Run Code Online (Sandbox Code Playgroud)
并添加这一行:
@daily root find /home/securityuser* -mtime +6 -type f -delete
Run Code Online (Sandbox Code Playgroud)
这将find每天运行一次命令并删除文件。
小智 5
据我所知:
尝试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
Run Code Online (Sandbox Code Playgroud)