我在bash方面非常新,之前从未编写过代码,但是现在需要解决这个问题。我需要编写一个bash脚本来制作一个压缩文件,其中包含多个目录。
就像这样 -
就像这样 -
/home/code/bots/
/var/config/
.
.
.
/var/system/
所有文件将被压缩成单个文件 /var/file/bkup.[zip][tar.gz]
谢谢您提前的帮助。
# 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
根据你的描述,这个问题不需要bash脚本,只需要使用tar
命令。
tar cvzf /var/file/bkup.tar.gz /home/code/bots/ /var/config/ . . . /var/system/
如果您想在cronjob中运行它并添加一些其他命令(例如mysqldump),则可以为其创建一个bash文件。
您需要创建一个名为backup.sh的文件,并添加以下内容(您可能需要更改bash的路径,可以使用whereis bash
找到bash)。
#!/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. 这段代码未经测试,仅是一个展示bash脚本在当前上下文中工作方式的例子。