我想获得一个小的Backupscript运行,我有点卡住了可能很容易,但我不能让它工作。Bash:更新使用更新变量的变量
在备份的每个部分(每个都用单独的脚本调用)后,我使用echo“备份1启动”/ echo“备份1结束”。这一直运行良好,但我想使用更多的变量,因此它更易于编辑之后。
这里是我的testscript
#!/bin/bash
# Backupcountervariable
bc=1
# Startbackup
startecho="echo $(date +%F_%T) | dobackup.sh | Backup "$bc" started!"
# Endbackup
endecho="echo $(date +%F_%T) | dobackup.sh | Backup "$bc" ended!"
echo $bc
$startecho
$endecho
bc=$(($bc+1))
echo $bc
$startecho
$endecho
变量BC之间得到更新,我知道。我认为我的问题是一个$startecho
和$endecho
被启动,他们不更新$bc
。
任何提示如何更新变量内的变量?
编辑:
对不起,误导您对IAM在这里做什么家伙。在这里你可以看到完整的备份脚本。它只调用单个备份并将输出放到日志文件中。 所以我只是通过cron执行这个脚本,而不是5个脚本。
#!/bin/bash
# Backupscripte ausfuehren 0.5
# Created: 2013/05/30 22:00
# Updated: 2013/06/05 02:31
# 0.5: Log verbessert, teamspeak hinzugefuegt, backupcounter
# 0.6: funktionen eingebaut, uebersichtlichkeit verbessert
### Variablendeklaration
# Log Variable definieren
logfile="/var/log/dobackup.log"
# Backupcountervariable
bc=1
# Backupcounterincrement
function bci() { bc=$((bc+1)) ; }
# Startbackup
function startecho() { echo "$(date +%F_%T) | dobackup.sh | Backup $bc gestartet!" >>$logfile ; }
# Endbackup
function endecho() { echo "$(date +%F_%T) | dobackup.sh | Backup $bc beendet!" >>$logfile ; }
# Start des Backups Ausgeben
echo "----------------------------------------------------------------" >>$logfile
echo "$(date +%F_%T) | dobackup.sh | FULL BACKUP GESTARTET!" >>$logfile
#### /var/www Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/varwwwbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci
#### /var/customers Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/customersbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci
#### Mysqldump Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/mysqlbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci
### TS3 Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/tsbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci
# Cleanup Backup FTP, remove files older then 30 days
echo "$(date +%F_%T) | dobackup.sh | Cleanup fuer den Backup FTP Server begonnen..." >>$logfile
#sh /root/cleanbackup.sh >>$logfile
echo "$(date +%F_%T) | dobackup.sh | Cleanup fuer den Backup FTP Server abgeschlossen!" >>$logfile
# Ende des Backups Ausgeben
echo "$(date +%F_%T) | dobackup.sh | FULL BACKUP BEENDET!" >>$logfile
所以我的日志是这样的:
----------------------------------------------------------------
2013-06-05_04:00:01 | dobackup.sh | FULL BACKUP GESTARTET!
2013-06-05_04:00:01 | dobackup.sh | Backup 1 gestartet!
2013-06-05_04:00:01 | Backupscript fuer /var/www/ gestartet!
2013-06-05_04:00:01 | Verzeichnis gewechselt! Beginne damit das Verzeichnis einzupacken...
2013-06-05_04:00:01 | Verzeichnis eingepackt! Beginne damit das Verzeichnis auf den FTP Server zu kopieren...
2013-06-05_04:00:01 | Backup erfolgreich auf den FTP Server verschoben! Temporaere Dateien werden nun geloescht...
2013-06-05_04:00:01 | Temporaere Dateien geloescht!
2013-06-05_04:00:01 | Backupscript fuer /var/www/ abgeschlossen!
2013-06-05_04:00:01 | dobackup.sh | Backup 1 beendet!
2013-06-05_04:00:01 | dobackup.sh | Backup 2 gestartet!
2013-06-05_04:00:01 | Backupscript fuer /var/customers/ gestartet!
2013-06-05_04:00:01 | Verzeichnis gewechselt! Beginne damit das Verzeichnis einzupacken...
2013-06-05_04:01:16 | Verzeichnis eingepackt! Beginne damit das Verzeichnis auf den FTP Server zu kopieren...
2013-06-05_04:04:56 | Backup erfolgreich auf den FTP Server verschoben! Temporaere Dateien werden nun geloescht...
2013-06-05_04:04:56 | Temporaere Dateien geloescht!
2013-06-05_04:04:56 | Backupscript fuer /var/customers/ abgeschlossen!
2013-06-05_04:04:56 | dobackup.sh | Backup 2 beendet!
2013-06-05_04:04:56 | dobackup.sh | Backup 3 gestartet!
2013-06-05_04:04:56 | Backupscript fuer mysqldump gestartet!
2013-06-05_04:04:56 | Verzeichnis gewechselt! Beginne mit dem mysqldump...
2013-06-05_04:04:56 | Mysqldump ausgefuehrt! Beginne mit dem einpacken des mysqldumps...
2013-06-05_04:04:56 | SQL Backup eingepackt! Beginne damit das Backup auf den FTP Server zu kopieren...
2013-06-05_04:04:56 | Backup auf FTP Server veschoben! Temporaere Files werden entfernt...
2013-06-05_04:04:56 | Temporaere Files wurden entfernt!
2013-06-05_04:04:56 | Backupscript fuer mysqldump abgeschlossen!
2013-06-05_04:04:56 | dobackup.sh | Backup 3 beendet!
2013-06-05_04:04:56 | dobackup.sh | Backup 4 gestartet!
2013-06-05_04:04:56 | Backupscript fuer /home/ts3/ gestartet!
2013-06-05_04:04:56 | Verzeichnis gewechselt! Beginne damit das Verzeichnis einzupacken...
2013-06-05_04:08:47 | Verzeichnis eingepackt! Beginne damit das Verzeichnis auf den FTP Server zu kopieren...
2013-06-05_04:17:08 | Backup erfolgreich auf den FTP Server verschoben! Temporaere Dateien werden nun geloescht...
2013-06-05_04:17:08 | Temporaere Dateien geloescht!
2013-06-05_04:17:08 | Backupscript fuer /home/ts3/ abgeschlossen!
2013-06-05_04:17:08 | dobackup.sh | Backup 4 beendet!
2013-06-05_04:17:08 | dobackup.sh | Cleanup fuer den Backup FTP Server begonnen...
2013-06-05_04:17:08 | dobackup.sh | Cleanup fuer den Backup FTP Server abgeschlossen!
2013-06-05_04:17:08 | dobackup.sh | FULL BACKUP BEENDET!
截至目前只有dobackup.sh,那么 “| dobackup.sh |”输出...
问候 大卫
请勿将代码放入变量中。您将代码转换为数据,然后将数据转化为代码。这违反了很多软件法律。 – lhunath
'startecho'的值被赋予一个值,该值包含'bc'在赋值时的扩展版本......这是1.您必须推迟对字符串的评估,直到您设置了'bc'达到您所需的价值。但是你的代码......有点奇怪。避免将命令序列放入字符串中;这会让你的生活变得非常困难,特别是如果有任何争论含有必须保留的空间。你必须担心'eval'等。 –
你误读的是,这是简单的“文本”IAM输出到日志文件。这不是备份本身。时间戳| dobackup.sh(这是执行各个备份脚本的脚本)|备份1/2/3 ...开始/结束! – David