it-swarm.com.de

So sichern Sie mehrere Ordner und Dateien mit dem Skript Backup.sh

Ich versuche, ein Skript zu erstellen, das beim Anmelden ausgeführt wird, oder beim Booten bestimmte Ordner und Dateien zu sichern. Ich kann nur die letzte Zeile des Ordners "# What to Backup." Und die Speicherorte der Dateien sichern.

Ich kann jeden dieser Speicherorte in die letzte Zeile unter # What to Backup. Verschieben, und das ist alles, was im Archiv gesichert wird. Gibt es einen anderen Befehl, den ich vermisse, um mehrere Sicherungen verschiedener Ordner und Dateien durchführen zu können, oder muss ich für jede Datei/jeden Ordner, den ich sichern möchte, einen backup.sh Erstellen?

Wenn ich unabhängige backup(NAME).sh - Skripte erstellen muss, muss ich dann zwischen jedem ausgeführten Skript eine Verzögerung hinzufügen?

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

Dank Dorian für die Bereitstellung einiger sehr guter Informationen konnte ich herausfinden, wie die gewünschten Dateien gesichert werden können. Es stellte sich heraus, dass ich TAR nur darüber informieren musste, welcher Ordner gesichert werden musste. Hier ist mein Skript in der jetzigen Form.

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

Dies liegt daran, dass Sie den Wert von backup_files Kontinuierlich überschreiben, sodass nur der letzte Wert in der Variablen gespeichert ist.

Sie müssen es zu einem Array machen und dann jedes Element im Array durchlaufen.

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"
3
Dorian

So sieht der Code für mehrere Dateien/Ordner aus. Der Schlüssel aus dem von mir bereitgestellten Skript informierte TAR darüber, wie die zu sichernden Ordner "analysiert" werden sollen.

Fügen Sie einfach mehr backup_filesX= Hinzu und vergessen Sie nicht, den echo "Backing up $backup_filesX to.. Hinzuzufügen, wenn Sie sehen möchten, wie er gesichert wurde.

Ein weiterer wichtiger Punkt ist natürlich die TAR-Zeile, die Sie mit zusätzlichen # Backup the files using tar.1 - Befehlen zum $backup_filesX Hinzufügen müssen.

Nochmals vielen Dank an Dorian für die Hilfe. Sehr geschätzt.

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