2013-08-28 3 views
27

Ich versuche, ein Backup-Skript in bash zu erstellen, um den Inhalt eines Ordners zu tarnen und die resultierende Datei irgendwo zu verschieben, aber ich weiß nicht wirklich, wie es geht.TAR-Datei erstellen und nach aktuellem Datum benennen

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

Aber das Ergebnis ist, dass die Datei nur +%y-%m-%d gestattet. Wie kann ich das Skript ändern, um die Datei nach dem gewünschten Datum zu benennen?

Vorgesehen Ausgabe: 2013-08-29.tar

Antwort

56

So:

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

oder sogar in einer Zeile:

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

Tropfen -z Flagge, wenn Sie .tar statt .tar.gz wollen.

Verwenden %y statt %Y wenn Sie nur zwei Ziffern eines Jahres wollen (17 statt 2017).

$() wird für command substitution verwendet.

+0

Warum .tar.gz nicht für die Ausgabedatei? – SMTF

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

wird volles Datum produzieren; wie %Y-%m-%d. (siehe man date folgen von /) zu suchen und %F.

Zum Beispiel wird es generieren:

2015-07-21.tar.gz 

Wenn code-path ein Verzeichnis ist, wird komprimieren und zu archivieren alle Dateien darin.

0

Auf BSD-System müssen Sie es wie folgt verwenden:

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