2010-06-17 24 views
12

Tôi rất mới trong bash và không bao giờ được mã hóa trước nhưng nhiệm vụ này bị mắc kẹt vì vậy cần phải loại bỏ nó. Tôi cần tạo tập lệnh bash để tạo một tệp nén với một số thư mục.mã bash giúp mã zip/tar của một số thư mục

Like -

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

và tất cả sẽ được nén để /var/file/bkup.[zip][tar.gz tập tin duy nhất]

Cảm ơn trước

Trả lời

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

Vấn đề như bạn đã mô tả nó không đòi hỏi một kịch bản bash, chỉ cần tar.

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

Bạn có thể tạo một file bash cho nó, nếu bạn có ý định chạy nó trong một cronjob ví dụ và thêm một số lệnh khác như một mysqldump trước

Bạn cần phải tạo một tập tin như backup.sh với các nội dung sau (bạn có thể cần phải thay đổi đường dẫn đến bash, bạn có thể tìm bash với 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. Đây là mã chưa được kiểm tra. Nó chỉ là một ví dụ về cách một tập lệnh bash hoạt động trong ngữ cảnh được trả lời hiện tại.

Các vấn đề liên quan