restore
バックアップディレクトリから現在のディレクトリにファイルをコピーする関数を作成しています。今すぐ呼び出すために復元するハードリンクを作成する必要がありますpurge
。クリアするために呼び出されたときに復元ステートメントを使用できるように、これをどのように実装しますかif
?if [ "$0" = "purge" ]
私のコードは次のとおりです。テストしたのでコードを減らします(動作します)。
restore(){
if [ "$1" = "-p" ] || [ "$0" = "purge" ]; then
while [ ! ]
do
#Purge code, etc...
done
elif [ "$1" != "-p" ]; then
select fname in $(find /$HOME/Backup -name "$1*" | sed 's!.*/!!' | sed 's!$1!!') quit
do
#If restore is called with an argument code...
done
local newfname=$(echo "$fname"|sed -E 's/[0-9]{11}$//')
cp -i "/$HOME/Backup/$fname" "$newfname"
exit 0
fi
while [ ! ]
do
fname=""
select fname in $(ls /$HOME/Backup) quit
do
#Restore with no arguments code...
done
local newfname=$(echo "$fname"|sed -E 's/[0-9]{11}$//')
cp -i "/$HOME/Backup/$fname" "$newfname"
done
}
このオプションを使用してリカバリを呼び出すことは、クリーンアップで-p
リカバリを呼び出すのと同じです。それでは、パージを使用して復元を呼び出すためにコードをどのように実装しますか?
関数ではなくスクリプトでなければなりません。Restore.sh
nameへのハードリンクを作成しましたPurge.sh
が、./Purge.shを使用して呼び出すと、まだ標準の復元コードが実行されます。ハードリンクされたファイルに対して復元が呼び出されたかどうかはどうすればわかりますか?
ベストアンサー1
これは不正行為かもしれませんか?回復スクリプトはまだ-p
ロジックを維持し、次のように別々のクリーンアップ機能を作成します。
purge () { /path/to/restore.sh -p "$@"; }
回復スクリプトから関数ラッパーを取り出す必要があります。そうでなければ、本質的に実行されるのではなくインポートするだけだと思います。