0

最终编辑:$DATE变量让我搞砸了。出于某种原因,当我重新格式化它时,它工作正常。有谁知道为什么这是一个问题?

这是最终的备份脚本:

#!/bin/bash
#Vars
OUTPATH=/root/Storage/Backups
DATE=$(date +%d-%b)

#Deletes backups that are more than 2 days old
find "$OUTPATH"/* -mtime +2 -type f -delete

#Actual backup operation
dd if=/dev/mmcblk0 | gzip -1 - | dd  of="$OUTPATH"/bpi-"$DATE".img.gz bs=512 count=60831745

旧脚本:

#!/bin/bash
#Vars
OUTPATH=~/Storage/Backups
DATE=$(date +%d-%b_%H:%M)

#Deletes backups that are more than 2 days old
find "$OUTPATH"/* -mtime +2 -type f -delete

#Actual backup operation
dd if=/dev/mmcblk0 | gzip -1 - | dd  of="$OUTPATH"/bpi_"$DATE".img.gz bs=512 count=60831745 

这是一个将我的香蕉派图像备份到外部硬盘的脚本。我是 bash 脚本的新手,所以我知道这很可能是一个简单的修复,但这是我的问题:

我正在从 ~/scripts 运行脚本

并且输出文件是 ~/Storage/Backups (外部硬盘的挂载点,在我的 /etc/fstab.

这些命令在 时工作正常OUTPATH=.,即它只是备份到运行脚本的当前目录。我知道我可以将脚本移动到备份文件夹并从那里运行它,但我正在尝试将它添加到我的 crontab 中,所以如果我可以将所有脚本保存在一个目录中,只是为了组织目的,那就太好了。

只是想知道如何正确地使脚本将我的图像写入该$OUTPATH变量。

编辑:我尝试将$OUTPATH变量更改为位于的测试目录/dev/root/(在脚本本身所在的同一设备上)并且它有效,所以我认为这只是尝试将图像写入设备的问题不同于脚本本身所在的那个。

/etc/fstab想使用的与外部硬盘相关的行如下:

/dev/sdb1 /root/Storage exfat defaults 0 0

/root/Storage/Backups文件夹是我尝试将图像写入的位置

4

2 回答 2

0

使用备份目录的完整路径名填充 OUTPATH。

于 2016-07-16T17:12:35.280 回答
0

OUTPATH=~/Storage/Backups

"$OUTPATH"放入时不执行波浪号扩展find

find "$OUTPATH"/* ....

您可以将 替换为~中的完整路径,也可以将OUTPATH替换为OUTPATH中的实际路径find

于 2016-07-20T03:51:17.940 回答