У меня есть резервные копии нескольких файлов. Мне нужен сценарий для проверки номера строки файла, и если он превышает, скажем, 8000 строк, он просто заархивирует его и назовет его в формате префикса даты. Мне нужна ваша помощь.
Этот сценарий получит номера строки, тогда если это будут больше чем 7 999 (больше, чем или равный 8 000), то это сделает .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
, команда крона была бы 0 17 * * * /home/USER/path/to/script.sh
для выполнения каждого dday в 17:00. Используйте этот генератор , чтобы помочь получить команду крона, если Вы хотите, чтобы он отличался.
Спасибо @Jnuk для генератора!
Вот демонстрационный сценарий, который делает то, что Вы описываете
#!/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
Первый, он объявляет som переменные,
, ИМЯ ФАЙЛА является файлом, которого Вы хотите проверить длину.
СТРОКИ iis сумма строк, мы находим меня файлом, который мы проверяем
, MAXLINES является макс. суммой строк, которые мы позволяем прежде, чем сделать резервное копирование.
ДАТА является сегодняшней датой в формате
Дня месяца года, BACKUP_PATH является каталогом, который Вы собираетесь скопировать.
do_backup является функцией, которая содержит команду резервного копирования
, сохраняют сценарий в файл в терминале:
chmod +x script_name
для создания его исполняемым файлом
./script_name/path/to/file_to_check_rows_of
, Если Вы хотите понять, больше как работы сценария пытаются выполнить его с:
-x script_name
шеннона