我有几个文件需要备份。我需要一个脚本来检查文件的行数,如果超过 8000 行,它会简单地压缩它并使用日期前缀格式命名。我需要你的帮助。
答案1
该脚本将获取行号,然后如果行号超过 7999(大于或等于 8000),它将生成该文件的 .tar.gz。
#! /bin/bash
lif=$(wc -l < /home/USER/path/to/file.txt)
if [ "$lif" -gt 7999 ]; then
tar /home/USER/path/to/where/you/want/the/backup/to/be/filename-$(date +%Y-%m-%d-%H:%M).tar.gz /home/USER/path/to/file.txt
不要忘记对脚本进行 chmod 以使其运行 -chmod +x /home/USER/path/to/script.sh
cron 命令将0 17 * * * /home/USER/path/to/script.sh
在每个工作日下午 5 点运行。使用这个发电机如果您希望它有所不同,请帮助获取 cron 命令。
谢谢@Jnuk用于发电机!
答案2
这是一个执行您描述的操作的示例脚本
#!/bin/sh
FILENAME=$1
LINES=$(cat "$FILENAME" |wc | awk '{print $1}')
MAXLINE="8000"
DATE=$(date +'%Y-%m-%d')
BACKUP_PATH="/path/to/files/"
do_backup(){
tar xvf ""backup_$DATE.tar"" "$BACKUP_PATH"
}
if [ "$LINES" -gt "$MAXLINE" ];
then
do_backup
fi
首先声明一些变量,
FILENAME 是您要检查其长度的文件。
LINES 是我们检查文件时找到的行数
MAXLINES 是我们在进行备份之前允许的最大行数。
DATE 是今天的日期,格式为“年-月-日”
BACKUP_PATH 是您要备份的目录。
do_backup 是包含备份命令的函数
将脚本保存到终端中的文件中:
chmod +x script_name
使其可执行
./脚本名称 /路径/到/文件要检查的行数
如果您想进一步了解脚本的工作原理,请尝试使用以下命令运行它:
sh -x 脚本名称