2017-10-20 9 views
0

私はバックアップシステムを作成するためにbashに取り組んでいます。私のコードはバックアップファイルの絶対パスをbashを使ってログファイルに保存する方法は?

#!/bin/bash 
    if [ ! -d "BackUp" ] 
    then 
    mkdir BackUp 
    fi 

    echo "enter number of access days you want to take for back up." 
    read days 

    bak="$(find . -mtime +$days)" 

    for file in $bak 
    do 
    mv $file BackUp 
    done 

    tar -cvf BackUp.tgz BackUp >> backUp.log 

です。現在、私はタールからログファイルを取っています。したがって、ログファイルのテキストの現在の作業ディレクトリだけをとる完全なパスは表示されません。コードの最後の行は、ログファイルの入力を受け取ります。

しかし、保存されたパスではなく、私はあなたが変数に絶対パスを格納しtarコマンドでそれを使用することができ、それは

home/ubuntu/Downloads/BackUp/foo1 
home/ubuntu/Downloads/BackUp/foo2 
home/ubuntu/Downloads/BackUp/foo3 
+0

私はあなたの質問を理解していません。あなたは何を、どのような目的のために完全な道を得たいですか? https://stackoverflow.com/questions/5265702/how-to-get-full-path-of-a-file? – mattias

+0

をログファイルに保存する – Nikul

+1

_it_とは何ですか?スクリプトのどの行のコードで満足できないのですか? – mattias

答えて

0

になりたい

.BackUp/foo1 
.BackUp/foo2 
.BackUp/foo3 

です:

BackUpDirFullPath=$(cd BackUp && pwd) 

command substitutionは、現在のdを残していないサブシェルを呼び出します。ディレクトリcdを実行してください。

更新:

(cd/&& tar -cvf /$OLDPWD/BackUp.tgz $BackUpDirFullPath) 
:私は...そのようなことをサブシェルで、ルートディレクトリに変更し、そこからそれを実行する必要がありました(Mac OSの上で)-v出力絶対パスを作るために

これは絶対パスを出力します...先頭に残すために/あなたはパス名を保存する-Pを試してみるかもしれません。

関連する問題