2013-08-28 7 views
27

Sto provando a creare uno script di backup in bash, a tar il contenuto di una cartella e spostare il file risultante da qualche parte, ma non so davvero come farlo.Creazione di file tar e denominazione in base alla data corrente

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

Ma il risultato è che il file viene semplicemente chiamata +%y-%m-%d. Come posso cambiare lo script per denominare il file in base alla data come previsto?

uscita previsto: 2013-08-29.tar

risposta

56

Ti piace questa:

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

o anche in una sola riga:

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

goccia -z bandiera se si vuole .tar invece di .tar.gz.

Uso %y invece di %Y se si desidera solo 2 cifre di un anno (17 invece di 2017).

$() viene utilizzato per command substitution.

+0

Perché non .tar.gz per il file di output? – SMTF

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

produrrà data piena; uguale a %Y-%m-%d. (vedere man date seguito da /) per cercare e %F.

Per esempio, genererà:

2015-07-21.tar.gz 

Se code-path è una directory che comprimerà e archiviare tutti i file in essa contenuti.

0

su BSD sistema potrebbe essere necessario usare in questo modo:

/usr/bin/tar -czvf /home/user/backup-`(date +%y-%m-%d)`.tar.gz /some/file.txt 
Problemi correlati