Como fazer backup de várias pastas e arquivos usando o script Backup.sh

0

Estou tentando criar um script que é executado no log-in ou inicializar os backups de algumas pastas específicas & amp; arquivos. Eu posso fazer backup apenas da última linha da pasta " # What to Backup. " e dos locais dos arquivos.

Eu posso mover qualquer um desses locais para a última linha em # What to Backup. , e isso é tudo o que fará backup no arquivo. Existe outro comando que estou faltando para poder completar vários backups de pastas diferentes & amp; arquivos, ou eu vou ter que criar um backup.sh para cada arquivo / pasta que eu quero fazer backup?

Se eu tiver que criar scripts backup(NAME).sh independentes, terei que adicionar algum tipo de atraso entre cada script em execução?

#!/bin/bash
####################################
#
# Backup script.
#
####################################

# What to backup. 
backup_files="/home/wyzer/.config/google-chrome/Default/Local*/kbmfpngjjgdllneeigpgjifpgocmfgmb"
backup_files="/home/wyzer/.config/google-chrome/Default/Favicons*"
backup_files="/home/wyzer/.config/google-chrome/Default/Favicons-journal*"
backup_files="/home/wyzer/.config/google-chrome/Default/Google*.png"


# Where to backup to.
dest="/home/wyzer/Downloads/Scripts/Test_Folder"

# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-TEST-$day.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.
ls -lh $dest

Graças ao Dorian por fornecer algumas informações muito boas, consegui descobrir como fazer o backup dos arquivos que eu queria. Acontece que eu só precisava informar TAR que pasta precisava de backup. Aqui está o meu roteiro como está agora.

#!/bin/bash
####################################
#
# Backup script.
#
####################################

# What to backup. 
backup_files1="/home/wyzer/.config/google-chrome/Default/Local*/kbmfpngjjgdllneeigpgjifpgocmfgmb"
backup_files2="/home/wyzer/.config/google-chrome/Default/Favicons"
backup_files3="/home/wyzer/.config/google-chrome/Default/Google*.png"
backup_files4="/home/wyzer/.config/google-chrome/Default/Favicons-journal"

# Where to backup to.
dest="/home/wyzer/Downloads/Scripts/Test_Folder"

# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.
echo "Backing up $backup_files1 to $dest/$archive_file"
echo "Backing up $backup_files2 to $dest/$archive_file"
echo "Backing up $backup_files3 to $dest/$archive_file"
echo "Backing up $backup_files4 to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files1 $backup_files2 $backup_files3 $backup_files4

# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.
ls -lh $dest
    
por Wyzer 22.03.2017 / 17:21

2 respostas

1

Isso ocorre porque você está sobrescrevendo continuamente o valor de backup_files , portanto, apenas o último é o que está armazenado na variável.

Você precisa criar um array e fazer um loop em cada item no array.

dest="/home/wyzer/Downloads/Scripts/Test_Folder"

#The line below will store multiple folders in an array (files)
files=( "/folder1" "/folder2" "/home/username/anotherfolder" )
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-TEST-$day.tgz"


for i in "${files[@]}"  # For every line in FILES
do # Do the following, starting with the first one:
    # Print start status message.
    echo "Backing up $i to $dest/$archive_file"  # Here, $i will be the first directory
    date
    echo

    # Backup the files using tar.
    tar czf $dest/$archive_file $i # Again, $i is the directory    
done # Stop here and do the loop again with the next item in FILES

# Print end status message.
echo
echo "Backup finished"
    
por Dorian 22.03.2017 / 17:31
0

Aqui está como o código procura vários arquivos / pastas, a chave do Script que eu forneci estava informando ao TAR como "analisar" as pastas que ele está fazendo o backup.

Basta adicionar mais backup_filesX= e não se esqueça de adicionar o echo "Backing up $backup_filesX to.. se quiser ver como foi feito o backup.

É claro que outra crítica é a linha TAR, certifique-se de adicionar aos comandos # Backup the files using tar.1 com $backup_filesX adicionais.

Obrigado novamente a Dorian por me ajudar. Muito Apreciado.

#!/bin/bash
####################################
#
# Backup script.
#
####################################

# What to backup. 
backup_files1="/home/wyzer/.config/google-chrome/Default/Local*/kbmfpngjjgdllneeigpgjifpgocmfgmb"
backup_files2="/home/wyzer/.config/google-chrome/Default/Favicons"
backup_files3="/home/wyzer/.config/google-chrome/Default/Google*.png"
backup_files4="/home/wyzer/.config/google-chrome/Default/Favicons-journal"

# Where to backup to.
dest="/home/wyzer/Downloads/Scripts/Test_Folder"

# Create archive filename.
day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.
echo "Backing up $backup_files1 to $dest/$archive_file"
echo "Backing up $backup_files2 to $dest/$archive_file"
echo "Backing up $backup_files3 to $dest/$archive_file"
echo "Backing up $backup_files4 to $dest/$archive_file"
date
echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files1 $backup_files2 $backup_files3 $backup_files4

# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.
ls -lh $dest
    
por Wyzer 22.03.2017 / 19:48