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 ステートメントに置き換えられます。

私が見る 1 つの問題は、これが十分に柔軟でないことです: ディレクトリが 5 つ以上下にある場合、それらは含まれません。それらを含めるようにスクリプトを拡張すると、問題を 1 ステップ移動するだけです。

別の問題は、現在スクリプトの出力に見られるものです。

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

この行が表示される理由はわかりませんが、そうすべきではないと思います。

それで... 途中で私を助けるためのヒントはありますか?

4

2 に答える 2

2

この仕事は任せたほうがいい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 に答える