Script de backup para FTP com subpastas cronometradas

3

Eu quero fazer um script de backup, que faz um .tar.gz de uma pasta que eu defino, digamos fx /root/tekkit/world

Esse arquivo .tar.gz deve ser carregado para um servidor FTP, nomeado no momento em que foi carregado, por exemplo: 07-10-2012-13-00.tar.gz

Como esse script de backup deve ser escrito?

Eu já descobri a parte .tar.gz - só preciso da nomenclatura e do upload para o FTP.

Eu sei que o FTP não é a maneira mais segura de fazer isso, mas como são dados não confidenciais, e o FTP é a única opção que eu tenho, ele serve.

Editar:

Acabei com este script:

#!/bin/bash

# have some path predefined for backup unless one is provided as first argument
BACKUP_DIR="/root/tekkit/world/"
TMP_DIR="/tmp/tekkitbackup/"
FINISH_DIR="/tmp/tekkitfinished/"
# construct name for our archive
TIME=$(date +%d-%m-%Y-%H-%M)

if [ $1 ]; then
    BACKUP_DIR="$1"
fi

echo "Backing up dir ... $BACKUP_DIR"
mkdir $TMP_DIR
cp -R $BACKUP_DIR $TMP_DIR
cd $FINISH_DIR
tar czvfp tekkit-$TIME.tar.gz -C $TMP_DIR .

# create upload script for lftp
cat <<EOF> lftp.upload.script
open server
user user password
lcd $FINISH_DIR
mput tekkit-$TIME.tar.gz
exit
EOF

# start backup using lftp and script we created; if all went well print simple message and clean up 
lftp -f lftp.upload.script && ( echo Upload successfull ; rm lftp.upload.script )
    
por Frederik Nielsen 07.10.2012 / 13:09

2 respostas

3

Primeiro, você cria uma tarefa cron que é invocada na hora em que você deseja que o backup seja criado Depois que o backup é criado, o script gera o script lftp para fazer o upload do arquivo via FTP.

#!/bin/bash

# have some path predefined for backup unless one is provided as first argument
BACKUP_DIR="/tmp/test"
# construct name for our archive
TIME=$(date +%d-%m-%Y-%H-%M)

if [ $1 ]; then
    BACKUP_DIR="$1"
fi



echo "Backing up dir ... $BACKUP_DIR"
tar czvfp $TIME.tar.gz $BACKUP_DIR

# create upload script for lftp
cat <<EOF> lftp.upload.script
open ftp.server.tld
user username password
cd /target/directory
lcd /local/dir/where/tar/gz/archive/is
mput $TIME.tar.gz
exit
EOF

# start backup using lftp and script we created; if all went well print simple message and clean up 
lftp -f lftp.upload.script && ( echo Upload successfull ; rm lftp.upload.script )
    
por 07.10.2012 / 13:23
1

Tão simples quanto:

DATE='date +%d-%m-%Y-%H-%M'
tar cfz ${DATE}.tar.gz /root/tekkit/world

Ou com menos digitação:

tar cfz $(date +%d-%m-%Y-%H-%M).tar.gz /root/tekkit/world

O que acontece?

$ DATE='date +%d-%m-%Y-%H-%M'
$ echo $DATE
07-10-2012-13-15
    
por 07.10.2012 / 13:17