由于备份脚本而导致文件无法删除

时间:2010-02-10 22:45:50

标签: bash unix file backup

我刚写了这个备份脚本:

#!/usr/bin/bash

# the number of days to do the backup for.
days=5;

# the files to backup.
location[0]='/opt/aDirectory/'
location[1]='/extra/anotherDirectory/'

# the location to copy the file to
copyLocation='/users/JoeBlow/Backup/backup-'$(date | tr ' ' '-')

# Log stuff
mkdir $copyLocation
echo "made backup for last $days">>$copyLocation/log

for loc in ${location[*]}
do
        echo "made backup of $loc" >> $copyLocation/log
done

echo "Errors and Warnings from find and cp" >> $copyLocation/log

# preform the back up
for loc in ${location[*]}
do
        for toBack in `find $loc \! -name '*.class' -mtime -$days \! -type d -print 2>> $copyLocation/log`
        do
                temp=${copyLocation}$(dirname $toBack)
                mkdir -p $temp 2>> $copyLocation/log
                cp $toBack $temp 2>> $copyLocation/log
        done
done

但它让我感到悲伤。

当我测试它时,我达到了我的磁盘配额。我认为没有问题我只会rm -r我创建的目录,清理一些空间然后再试一次。不。不行。我收到了这个错误;

% rm -r backup-Wed-Feb-10-16\:58\:59-EST-2010/
rm: Unable to remove directory backup-Wed-Feb-10-16:58:59-EST-2010//direcotry/something: File exists
....

权限问题对吗?错误。

我cd到该目录中的最低位置,有一个非常大的隐藏文件。所以我rm。它允许删除它,但在目录中放置一个名称略有不同的新文件。什么是锣?

两个问题:

1我的备份脚本有问题吗?

2为什么我不能删除该文件?

3 个答案:

答案 0 :(得分:1)

在某些环境中,rm会为支持取消删除的内容设置别名,以尝试从用户身上保存用户。我想知道是否会出现这种情况?你能用两个重复实验吗?

/bin/rm -r backup-Wed-Feb-10-16\:58\:59-EST-2010/

或可能

/bin/rm -rf backup-Wed-Feb-10-16\:58\:59-EST-2010/

让我们知道结果?

答案 1 :(得分:1)

该目录的文件系统类型是什么?我看到对区域设置和ntfs-3g的引用导致“文件存在”错误(ntfs-3g无法正确显示文件,但它仍然存在)。

答案 2 :(得分:1)

如果没有更多信息,我会走出困境:你的脚本是正确的,如果有点危险的话。它试图将许多文件复制到您的备份区域,但因为没有足够的空间而被卡住。删除大文件时,可以腾出足够的空间来复制更多文件。它可以尽可能快地删除它们。

我建议您终止进程,清除备份区域,并在脚本中进行空格检查。