2014-11-05 36 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