最终编辑:$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
OLD SCRIPT:
#!/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
这是一个将我的香蕉pi图像备份到外部硬盘的脚本。我是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
文件夹是我尝试将图像写入
答案 0 :(得分:0)
使用备份目录的完整路径名填充OUTPATH。
答案 1 :(得分:0)
在
OUTPATH=~/Storage/Backups
将"$OUTPATH"
放入find
时,不执行代字号扩展
find "$OUTPATH"/* ....
您可以将~
替换为OUTPATH
中的完整路径,或将OUTPATH
替换为find
中的实际路径。