我需要自动清理仅保存备份文件的基于 Linux 的 FTP 服务器。
在我们的“\var\DATA”目录中是一个目录集合。这里用于备份的任何目录都以“DEV”开头。每个“DEVxxx*”目录中都是实际的备份文件,以及在这些设备的维护过程中可能需要的任何用户文件。
我们只想保留以下文件 - 在这些“DEVxxx*”目录中找到的任何其他文件都将被删除:
The newest two backups: ls -t1 | grep -m2 ^[[:digit:]{6}_Config]
The newest backup done on the first of the month: ls -t1 | grep -m1 ^[[:digit:]{4}01_Config]
Any file that was modified less than 30 days ago: find -mtime -30
Our good configuration file: ls verification_cfg
任何与上述内容不符的内容都应删除。
我们如何编写这个脚本?
我猜 BASH 脚本可以做到这一点,并且我们可以创建一个 cron 作业每天运行来执行该任务。
最佳答案
也许是这样的?
{ ls -t1 | grep -m2 ^[[:digit:]{6}_Config] ;
ls -t1 | grep -m1 ^[[:digit:]{4}01_Config] ;
find -mtime -30 ;
ls -1 verification_cfg ;
} | rsync -a --exclude=* --include-from=- /var/DATA/ /var/DATA.bak/
rm -rf /var/DATA
mv /var/DATA.bak /var/DATA
关于linux - 删除目录中的所有文件,除了列出的符合特定条件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458131/