2011-01-21 10 views
0

設定されたフォルダから連続してバックアップを取るために、以下のbashスクリプトをまとめました。Bashスクリプト:Tarが正しく動作しません。

しかし、findコールでは、バックアップに/home/myfoldertobackup/が含まれているだけでなく、ファイルの経過時間もチェックされているように見えます。なぜ地球上にいるのですか?前述のフォルダだけがタールに入れられていることを確認するために私は何ができますか? findは、それが見つかったファイルの名前を{}を置き換えるためである

if [ -e $filename ]; 
then 
    # Tar exist. Check if tar is older than five days and if so, update it. 
    find $filename -mtime +5 -exec tar -czvf $filename /home/myfoldertobackup/ {} \; 
else 
    #Tar doesn't exist. Force creation of tar! 
    tar -czvPf $filename /home/myfoldertobackup/ 
fi 
+3

バックアップ戦略では、何らかの理由で新しいバックアップが失敗した場合、y私たちの以前のバックアップは破壊されています - あなたは以前よりも悪化しています。新しいバックアップが完了するまで、古いバックアップを破棄しないでください。 –

+0

こんにちはジョナサン。絶対に良い点!あなたは、一時的な場所でタールを作って、それをバックアップの目的地に移動する方が適切でしょうか? – Industrial

答えて

3

「$ファイル名は」最終更新時刻が古いより5日である場合は、実行に次のコマンドを見つけます$ filenameにそれを書いてください)。

:あなたは$ファイル名をしたくない場合はここに私の提案された変更を使用してコードがある

if [ -n "$(find $filename -mtime +5)" ]; then 
    tar -cvzf "$filename" /home/myfoldertobackups; 
fi 

UPDATE

(より読みやすいので)ちょうど

find $filename -mtime +5 -exec tar -cvz /home/myfoldertobackups -f {} \; 

以上を書きます

if [ -e $filename ]; 
then 
    # Tar exist. Check if tar is older than five days and if so, update it. 
    # find $filename -mtime +5 -exec tar -czvf $filename /home/myfoldertobackup/ {} \; 
    if [ -n "$(find $filename -mtime +5)" ]; then 
     tar -cvzf "$filename" /home/myfoldertobackups; 
    fi 
else 
    #Tar doesn't exist. Force creation of tar! 
    tar -czvPf $filename /home/myfoldertobackup/ 
fi 
+0

こんにちはマルコ!このために大きな感謝。私は少し遅れているかもしれませんが、あなたのソリューションは、ファイルが存在しないかもしれないという事実を考慮していますか? – Industrial

+0

いいえ、何も問題はありません。私のソリューションはfindコマンドだけを置き換えます。とにかく、私は完全なコードで私の答えを更新します:) – marco

+0

こんにちはマルコ。あなたの助けをありがとう! – Industrial

2

。 ちょうど{}をドロップすると、完了です。 /タールをしようとしているので、おそらく切り捨てホーム/ myfoldertobackup $ファイル名を(置く

tar -cvfz $filename /home/myfoldertobackups/ $filename 

関連する問題