Код скрипта bash поможет сделать zip / tar из нескольких папок - PullRequest
12 голосов
/ 18 июня 2010

Я очень новичок в bash и никогда раньше не кодировал, но эта задача застряла, поэтому нужно от нее избавиться.Мне нужно сделать скрипт bash, чтобы создать один сжатый файл с несколькими каталогами.

Like -

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

, и все будет сжато в один файл /var/file/bkup.[zip] [tar.gz]

Заранее спасибо

Ответы [ 3 ]

38 голосов
/ 18 июня 2010
# 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 голосов
/ 18 июня 2010

Вы можете создать для него bash-файл, если, например, намереваетесь запустить его в cronjob и добавить некоторые другие команды, такие как mysqldump, заранее

Вам необходимо создать файл наподобие backup.sh со следующим содержимым (Вам может понадобиться изменить путь к bash, вы можете найти bash с помощью whereis 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 работает в текущем контексте ответа.

3 голосов
/ 18 июня 2010

Проблема, как вы описали, не требует bash-скрипта, просто tar.

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