帮助编写bash脚本代码以将多个文件夹打包成zip/tar文件

13
我在bash方面非常新,之前从未编写过代码,但是现在需要解决这个问题。我需要编写一个bash脚本来制作一个压缩文件,其中包含多个目录。
就像这样 -
/home/code/bots/
/var/config/
.
.
.
/var/system/

所有文件将被压缩成单个文件 /var/file/bkup.[zip][tar.gz]

谢谢您提前的帮助。

3个回答

40
# 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

根据你的描述,这个问题不需要bash脚本,只需要使用tar命令。

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

3

如果您想在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脚本在当前上下文中工作方式的例子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接