Usando o Crontab para tar um diretório em um intervalo regular

3

Eu quero colocar um diretório em um intervalo regular (digamos todas as manhãs às 4 da manhã), então eu estava planejando usar o crontab. Como posso ter a data no nome do arquivo ie srcdirectorybackup5-30-09.tar para que eu possa diferenciar entre todos os arquivos tar.

    
por DHamrick 30.06.2009 / 02:21

5 respostas

6

Você deseja datas no formato ISO - AAAA-MM-DD. Eles classificam corretamente assim.

tar -cf srcdirectorybackup'date +%F'.tar /path/to/src

Presume que tar e data estão no caminho. Você pode adicionar esta linha a um crontab.

Cripes! ericslaw está absolutamente certo . Aqueles% precisam ser escapados se forem usados no arquivo crontab ou serão interpretados como novas linhas!

Então, se você colocar essa linha no crontab, escape do "%" com um "\".

tar -cf srcdirectorybackup'date +\%F'.tar /path/to/src

O representante realmente deveria ir para o ericslaw ...

    
por 30.06.2009 / 02:31
12

ACK!

várias pessoas sugeriram a maravilhosa solução de estilo +% Y% m% d_% H% M% S mas ninguém mencionou a principal advertência de '%' em crontabs ...

'%' é equivalente a '\ n', então seu cronjob provavelmente irá disparar e falhar misteriosamente!

É mais provável que você simplesmente escape com uma barra invertida como essa (e também gostaria de obter algum tipo de inventário ou outra saída para verificar se ele foi executado).

0 4 * * * tar vcf /path/to/dsttarfile.tar.'date +\%Y\%m\%d_\%H\%M\%S' /path/to/srcdir > /path/to/logfile.log 2>&1

Você pode considerar o uso de 'date +% w' como parte de seu tarfile, então você tem um arquivo tar para cada um dos últimos 7 dias e não precisa se preocupar com a remoção de cópias antigas.

    
por 30.06.2009 / 03:15
0

assumindo que você pode manipular o material do crontab, para o bash, o comando seria o seguinte:

bash -c "tar -cf 'date +%F'test.tar foo bar"

Claro, foo e bar são os arquivos, test.tar é o resto do sufixo que você quer para o arquivo, e você coloca qualquer opção que você precisa:)

Isso funciona tanto no cygwin quanto no linux. Eu não estou familiarizado o suficiente com o cron para saber se dizer qual shell usar assim é necessário.

    
por 30.06.2009 / 02:34
0

Em muitas distribuições Linux, estas são as etapas que você deve seguir:

  1. cronttab -e
  2. No editor de texto, insira: 0 4 * * * /home/scripttaringsrc.sh
  3. saia do editor salvando os arquivos com ": wq"

A criação do arquivo /home/scripttaringsrc.sh

tar -cf srcdir 'date +%Y-%m-%d_%Hh%Mm'.tar /path/to/dst

Não esqueça de chmodar o scripttaringsrc.sh para executar permissões.

    
por 30.06.2009 / 02:38
0

Eu tenho este pequeno script que empacota todo o meu diretório e o salva em um diretório com a data correta.

Salve este script e coloque-o em /etc/cron.daily/ (se estiver disponível no seu dist), já que os scripts que estão nesse diretório executam "uns por dia" na maioria das vezes, por volta de 4. No entanto, uma rápida olhada no / etc / crontab mostrará os detalhes exatos.

#!/bin/sh

date='date +%Y%m%d-%H%M'
#echo Tid: $date

bpath=/var/backup/computername

cd $bpath/
mkdir sys$date
cd sys$date

datumfil=$bpath/sys$date/$date
> $datumfil

tar -cvzf etc.tar.gz /etc/ > etc.tar.gz.list

md5sum * >  md5sum
ls -lh   >> md5sum

Nota: você precisa alterar isso um pouco para obter o nome de arquivo "correto" desejado.

/ Johan

    
por 30.06.2009 / 07:31

Tags