Linux 项目 : bash script to archive and remove files

标签 linux bash file cron tar

我已经设置了一个迷你项目来运行 bash 脚本来存档和删除早于“x”天数的文件。该文件将存档在/nfs/archive 目录中,它们需要被压缩 (TAR) 或删除...例如'/test.sh 15' 将删除超过 15 天的文件。此外,我还需要在删除文件之前输入一些验证检查...

到目前为止我的代码:

> #!/bin/bash 
> 
> #ProjectEssentials:
> 
> # TAR: allows you to back up files
> # cronjob: schedule taks 
> # command: find . -mtime +('x') -exec rm {} \; this will remove files older than 'x' number of days 
> 
> find /Users/alimohamed/downloads/nfs/CAMERA -type f -name '*.mov'
> -mtime +10 -exec mv {} /Users/limohamed/downloads/nfs/archive/ \;
> 
> # TAR: This will allow for the compression
> 
> tar -cvzf doc.tar.gz /Users/alimohamed/downloads/nfs/archive/
> 
> # Backup before removing files 'cp filename{,.bak}'?  find /Users/alimohamed/downloads/nfs/CAMERA -type f name '*.mov' -mtime +30
> -exec rm {} \; ~

任何帮助将不胜感激!!

最佳答案

修改脚本以修复一些错别字。注意备份文件将有一个 YYYY-MM-DD,以允许多次备份(每天仅限一次备份)。使用 TOP 使脚本通用 - 适用于任何帐户。

X=15      # Number of days

          # Move old files (>=X days) to archive, via work folder
TOP=~/downloads/nfs
mkdir -p "$TOP/work"
find $TOP/CAMERA -type f -name '*.mov' -mtime +"$X" -exec mv {} "$WORK/work" \;

       # Create daily backup (note YYYY-MM-DD in file name from work folder
tar -cvzf $TOP/archive/doc.$(date +%Y-%m-%d).tar.gz -C "$TOP/work" .

       # Remove all files that were backed-up, If needed
find "$TOP/work" -type f -name '*.mov' -exec rm {} \; ~

关于Linux 项目 : bash script to archive and remove files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588385/

相关文章:

command-line - 在 Vim 中打开 URL 的最佳方法

angularjs - Angular 应用程序无法在 Windows 操作系统中打开

java - 设置 Elasticsearch 问题

linux - 网络接口(interface)之间的路由 Ubuntu

bash - 将两个 shell 命令组合成一个命令

c - 如何在C语言中查找文本文件中的字符串?

javascript - 如何使用 NodeJS 在 Windows 和 Linux 机器上读取同一项目中的绝对路径?

linux - 将可用 Windows 服务列表传递到数组中并提示用户选择要激活的服务

bash - 在(=)符号后用空格分配变量?

c++ - C++中的二进制文件