2014-11-05 60 views
1

我有備份我的樹莓派如何日期追加到一個字符串在bash

sudo dd bs=1M if=/dev/sda1 of=/home/pi/backup.img 
zip -r /home/pi/backup/backup.zip /home/pi/backup.img 
cp backup.zip ~/backup 

我想知道我可以追加日至backup.zip文件,由第二生成一個腳本線。

任何提示?

+0

/home/pi是否位於/ dev/sda1上?如果是這樣,那麼這個機會恰好爲零的可能性會給你一個可用的備份。我認爲這沒有任何意義,因爲將磁盤自己的映像寫入該磁盤可能總是不可能的,但除非確保沒有任何內容可以寫入/ dev/sda1(即通過掛載它只讀或卸載它完全)有一個非常現實的機會,即一些正在進行的文件IO會使您的映像處於不一致的狀態。 – Wug 2014-11-05 22:51:57

+0

@Wug - 出於好奇,最糟糕的情況是什麼?當時寫入的任何文件都可能以無效狀態備份,但是可能發生的壞事情的程度?究竟有多糟? – 2014-11-05 23:07:45

+1

例如:EXT FS中的inode表往往是連續的,並且靠近FS的開始處。假設你複製整個磁盤。複製運行時,您將刪除一個文件並創建一個新文件。你已經複製的inode表仍然記得原始文件,但你的批量拷貝還沒有做到這一點,當它到達該文件的塊時,它們已被重新分配到另一個文件,他們在他們身上潦草地寫着。哎呀!取而代之的是一個文件夾,並最終導致損壞的目錄條目。這是一個可怕的世界。 – Wug 2014-11-05 23:39:49

回答

5

您可以使用command substitution來完成此操作。
您可能還需要熟悉date組件:

# Save the file name in a variable so we don't repeat ourselves 
outfile="/home/pi/backup/backup.zip.$(date +%Y%m%d)" 

sudo dd bs=1M if=/dev/sda1 of=/home/pi/backup.img 
zip -r "${outfile}" /home/pi/backup.img 
cp "${outfile}" ~/backup 

這裏的法寶是$(date +%Y%m%d)。這將運行date +%Y%m%d並以YYYYMMDD格式捕獲當前日期的輸出。

+1

您可能需要'.../backup。$(date ...)。zip' – 2014-11-06 00:09:11