2010-06-17 4 views
12

Ich bin sehr neu in bash und noch nie in codiert aber diese aufgabe ist fest, also müssen sie loswerden. Ich muss Bash-Skript machen, um eine einzige komprimierte Datei mit mehreren Verzeichnissen zu erstellen.bash script code hilfe um zip/tar von mehreren ordnern zu machen

wie -

/home/code/bots/ 
/var/config/ 
. 
. 
. 
/var/system/ 

und alle werden auf einzelne Datei /var/file/bkup.[zip][tar.gz komprimiert werden]

Vielen Dank im Voraus

Antwort

37
# tar: (c)reate g(z)ip (v)erbose (f)ile [filename.tar.gz] [contents]... 
tar -czvf /var/file/bkup.tar.gz /home/code/bots /var/config /var/system 

# zip: (r)ecursive [filename.zip] [contents]... 
zip -r /var/file/bkup.zip /home/code/bots /var/config /var/system 
3

Das Problem, wie Sie es beschrieben haben, erfordert kein Bash-Skript, nur tar.

tar cvzf /var/file/bkup.tar.gz /home/code/bots/ /var/config/ . . . /var/system/ 
3

Sie könnten eine Bash-Datei für sie erstellen, wenn Sie es in einem Cronjob zum Beispiel und fügen Sie einige andere Befehle wie ein mysqldump vorher

Sie müssen ausführen möchten eine Datei wie backup.sh erstellen mit folgendem Inhalt (möglicherweise müssen Sie den Pfad zu bash ändern, Sie bash mit whereis bash finden)


#!/bin/bash 
# 
# Backup script 
# 

# Format: YEAR MONTH DAY - HOUR MINUTE SECOND 
DATE=$(date +%Y%m%d-%H%M%S) 

# MySQL backup file 
MYSQLTARGET="/var/file/backup-mysql-$DATE.sql" 

# Target file 
TARTARGET="/var/file/backup-$DATE.tar.gz" 

# MySQL dump 
# you cannot have a space between the option and the password. If you omit the password value 
# following the --password or -p option on the command line, you are prompted for one. 
mysqldump -u root -ppassword --all-databases > $MYSQLTARGET 

tar -czvf $TARTARGET $MYSQLTARGET /home/code/bots /var/config /var/system 

PS. Dies ist ein nicht getesteter Code. Es ist nur ein Beispiel dafür, wie ein Bash-Skript im aktuellen Kontext funktioniert.