我刚写了这个备份脚本:
#!/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为什么我不能删除该文件?
答案 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)
如果没有更多信息,我会走出困境:你的脚本是正确的,如果有点危险的话。它试图将许多文件复制到您的备份区域,但因为没有足够的空间而被卡住。删除大文件时,可以腾出足够的空间来复制更多文件。它可以尽可能快地删除它们。
我建议您终止进程,清除备份区域,并在脚本中进行空格检查。