Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash中将日期附加到字符串_Bash_Date_Raspberry Pi - Fatal编程技术网

如何在bash中将日期附加到字符串

如何在bash中将日期附加到字符串,bash,date,raspberry-pi,Bash,Date,Raspberry Pi,我有一个脚本备份我的树莓圆周率 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文件中 有什么建议吗?你可以用它来完成这个任务。 您可能还希望熟悉以下组件: # Save the file name in a variable so w

我有一个脚本备份我的树莓圆周率

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文件中

有什么建议吗?

你可以用它来完成这个任务。
您可能还希望熟悉以下组件:

# 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

这里的神奇之处在于
$(日期+%Y%m%d)
。这将运行
date+%Y%m%d
并以YYYYMMDD格式捕获将作为当前日期的输出。

doe/home/pi live on/dev/sda1?如果是这样的话,这将为您提供可用备份的可能性为零。我认为这没有任何意义,因为将磁盘自己的映像写入该磁盘可能总是不可能的,但除非您确保没有任何东西可以写入/dev/sda1(即,以只读方式装载或完全卸载它)很有可能某些正在进行的文件IO会使您的图像处于不一致的状态。@Wug-出于好奇,可能发生的最坏情况是什么?当时正在编写的任何文件都可能在无效状态下备份,但这就是可能发生的糟糕情况的程度吗?这到底有多糟糕?例如:extfss中的inode表往往是连续的,并且接近FS的开头。假设你复制了整个磁盘。复制运行时,删除一个文件并创建一个新文件。您已经复制的inode表仍然记得原始文件,但是您的大容量副本还没有到那个程度,当它到达该文件的块时,它们已经被反编译并重新分配到另一个文件,该文件已经在它们上面涂鸦了。哎呀!相反,删除文件夹会导致目录项损坏。这是一个可怕的世界。如果你在复制inode表和空闲块位图之间的(很短的)窗口中进行某种操作,更糟糕的事情可能会发生。您可能会得到包含未分配块的文件、已分配但未分配给任何文件的块、包含不存在文件的目录等…@Wug-很高兴知道。难道在物理上不可能在设备本身上安装备份吗?例如,如果
/dev/sda1
为8GB,那么转储文件是否为8GB,除非它是100%空的,否则不可能安装在
/dev/sda1
上?您可能需要
../backup.$(日期…).zip