2013-08-28 4 views
27

द्वारा टैर फ़ाइल और नामकरण बनाना मैं बैकअप में बैकअप स्क्रिप्ट बनाने की कोशिश कर रहा हूं, किसी फ़ोल्डर की सामग्री को टारने और परिणामस्वरूप फ़ाइल को कहीं स्थानांतरित करने की कोशिश कर रहा हूं, लेकिन मुझे वास्तव में यह नहीं पता कि यह कैसे करना है।वर्तमान दिनांक

#!/bin/bash 
name="$date +"%y-%m-%d"" 
tar -zcvf $name code 

लेकिन परिणाम यह है कि फ़ाइल का नाम +%y-%m-%d है। तिथि के अनुसार फ़ाइल को नाम देने के लिए मैं स्क्रिप्ट को कैसे बदल सकता हूं?

इरादे से उत्पादन: 2013-08-29.tar

उत्तर

56
इस तरह

:

name=$(date '+%Y-%m-%d') 
tar -zcvf "$name.tar.gz" code 

या यहां तक ​​कि एक पंक्ति में:

tar -zcvf "$(date '+%Y-%m-%d').tar.gz" code 

ड्रॉप -z झंडा अगर आप .tar बजाय .tar.gz चाहते हैं।

उपयोग %y बजाय %Y अगर आप एक साल के सिर्फ 2 अंक चाहते हैं (2017 के बजाय 17)।

$()command substitution के लिए उपयोग किया जाता है।

+0

आउटपुट फ़ाइल के लिए क्यों .tar.gz नहीं? – SMTF

4
tar -zcvf "$(date '+%F').tar.gz" code-path 

पूर्ण तिथि का उत्पादन करेगा; %Y-%m-%d के समान। (man date/ द्वारा अनुसरण करें) और %F देखें।

उदाहरण के लिए, यह उत्पन्न करेगा:

2015-07-21.tar.gz 

code-path तो एक निर्देशिका यह सेक और उस में सभी फ़ाइलों के संग्रहण जाएगा।

0

बीएसडी प्रणाली पर आप इस तरह इसका इस्तेमाल करने की आवश्यकता हो सकती है:

/usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt 
संबंधित मुद्दे