0

我正在尝试创建一个简单的备份脚本,其中包括复制我的 Firefox 配置文件,不包括该配置文件中的任何缓存项或文件夹。

这是在我的基于 debian 的 crunchbang 系统上。

这听起来很简单,但我是 bash 脚本的新手,到目前为止我想出的东西太不优雅和笨拙,我很想得到一些意见。

这是我到目前为止所拥有的:

#!/bin/bash

for f in /home/my_name/.mozilla/firefox/*.default/*
do
echo "$f level 1"

if [[ "$f" != "Cache" ]]
then
    if [ -d $f ]
    then
        for g in $f/?
        do
           echo "$g level 2"
            for h in $g/?
            do
            echo "$h level 3"
                for i in $h/?
                do
                echo "$i level 4"
                for j in $i/?
                do
                echo "$j level 5"
                done
            done
        done
    done 
    fi
fi
done

您可能已经猜到,回声在那里用于错误检查。这些将被 cp 语句替换。

我看到的一个问题是这不够灵活:如果目录超过 5 个,则不会包含它们。如果我扩展脚本以包含它们,我只是将问题移到一步。

另一个问题是我目前在脚本输出中看到的一个问题:

/home/my_name/.mozilla/firefox/gibberish.default/OfflineCache/?/?/? level 4

我不知道为什么这条线会出现,但我相信它不应该出现。

所以...有什么提示可以帮助我吗?

4

2 回答 2

2

This job is best left to rsync

rsync -avh --progress --exclude='*Cache/' ~/.mozilla/firefox/ /path/to/your/backup/location/
于 2012-02-21T19:51:35.703 回答
1

递归目录结构的标准工具是find.

find /home/my_name/.mozilla/firefox/*.default/* -name Cache -prune -o -type f -exec echo cp {} dest \;

echo一旦你看到你喜欢的东西,就把它拿出来。您可能想在谷歌上搜索更多示例,也许是xargs. 如果您cp-t选择,还请查看\+文档find -exec

于 2012-02-21T19:53:11.007 回答