bash script para fazer backup do arquivo [closed]

1

Eu tenho alguns arquivos para fazer o backup. Eu preciso de um script para verificar o número da linha de um arquivo e, se exceder, digamos, 8000 linhas, ele irá simplesmente zipá-lo e nomeá-lo com o formato de prefixo de data. Eu preciso da sua ajuda.

    
por kenn 28.07.2014 / 14:51

2 respostas

4

Este script irá obter os números de linha, em seguida, se for mais de 7999 (maior que ou igual a 8000), fará um .tar.gz do arquivo.

#! /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

Não faça chmod o script para executá-lo - chmod +x /home/USER/path/to/script.sh

O comando cron seria 0 17 * * * /home/USER/path/to/script.sh para executar todos os dias às 17h. Use este gerador para ajudar a obter o comando cron se você quiser que ele seja diferente.

Obrigado @Jnuk para o gerador!

    
por Tim 28.07.2014 / 14:59
1

Aqui está um exemplo de script que faz o que você descreve

#!/bin/sh

FILENAME=
LINES=$(cat "$FILENAME" |wc  | awk '{print }')
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

Primeiro declara variáveis de som,

FILENAME é o arquivo que você deseja verificar a duração de.

LINHAS é a quantidade de linhas que encontramos no arquivo que verificamos

MAXLINES é a quantidade máxima de linhas permitidas antes de fazer um backup.

DATE é a data de hoje no formato Ano-Mês-Dia

BACKUP_PATH é o diretório do qual você fará o backup.

do_backup é a função que contém o comando backup

salve o script em um arquivo no terminal:

chmod +x  script_name

para torná-lo executável

./ script_name / path / to / file_to_check_rows_of

Se você quiser entender mais sobre como o script funciona, tente executá-lo com:

sh -x script_name

    
por tomodachi 28.07.2014 / 15:32