• 已删除用户
Ting
发布于 2022-09-10 / 105 阅读
0

文件夹自动归档脚本

脚本需求:

  • 每天自动将临时文件夹内文件或目录移动至“临时/归档/年月日”文件夹中
  • 删除“归档”文件夹中超过30日的文件和文件夹。
  • 脚本代码如下:
#!/bin/bash
mkdir 临时/归档/$(date +%Y%m%d)
find 临时/ ! -path "临时/归档/*" ! -path "临时/本目录每日自动归档到归档文件夹,超过30日将自动删除" -type f -exec mv {} 临时/归档/$(date +%Y%m%d) \;
find 临时/ -mindepth 1 -maxdepth 1 ! -path "临时/归档/*" ! -path "临时/归档" -type d -exec mv {} 临时/归档/$(date +%Y%m%d) \;
find 临时/归档/ -mindepth 1 -maxdepth 1 -mtime +30 -type d -exec rm -rf {} \;

参数解释(按行号)

  1. 指定shell脚本解释器的路径,这里用bash;
  2. 临时/归档下创建年年年年/月月/日日格式的文件夹;
  3. 查找临时下的所有文件(通过-type f指定),并移动到临时/归档/$(date +%Y%m%d)中,其中! -path为跳过参数,此处跳过了临时/归档/中的文件和一个提示文件;
  4. 查找临时下的所有文件夹(通过-type d指定),并移动到临时/归档/$(date +%Y%m%d)中,此处跳过了临时/归档文件夹以及临时/归档/下的所有文件夹。-mindepth 1 -maxdepth 1参数为指定查找层级,如果不指定,会连同第0级即临时文件夹本身一起查找并移动,此时会收到无法将文件夹移动到其子文件夹的提示;
  5. 查找临时/归档文件夹下超过30天的文件夹并删除。

脚本定时执行

  1. Linux可以使用crontab命令来定期执行特定程序。
  2. 启动命令 crontab [ -u user ] file 其中file为预先编辑好的crontab输入文件; 或 crontab [ -u user ] { -l | -r | -e } 参数说明:
    1. [ -u user ],可选参数,用于指定执行程序的特定用户,未指定是为当前用户;
    2. -e : 不预设输入文件,直接通过默认的编辑器vi来设定时程表;
    3. -r : 删除目前的时程表;
    4. -l : 列出目前的时程表。
  3. 输入文件的语法&格式 f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天,program 表示要执行的程序; 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推; 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推; 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推; 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推。

部分内容参考出处:Linux crontab 命令 via runoob.com