"没有这样的文件或目录"在bash脚本中

时间:2016-07-16 15:38:32

标签: bash shell backup banana-pi

最终编辑:$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文件夹是我尝试将图像写入

的位置

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

OUTPATH=~/Storage/Backups
"$OUTPATH"放入find

时,不执行

代字号扩展

find "$OUTPATH"/* ....

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