bashスクリプトでtarでfind -nameを使用すると、何が間違っているのでしょうか? [閉鎖]

bashスクリプトでtarでfind -nameを使用すると、何が間違っているのでしょうか? [閉鎖]

スクリプトの使い方を学びようとしていますbash。 Google で回答を見つけましたが、私の問題に対する回答が見つかりませんでした。

スクリプトは次のとおりです。

#!/bin/bash
TIME=`date +%b-%d-%y`
FILENAME=backup-$TIME.tar.gz
DESDIR=home/pi/backups
SRC=home/pi/backuplist.txt
find -iname '*.orig' -o -iname '*.py' > home/pi/backuplist.txt
tar -zcvf $DESDIR/$FILENAME $SRC

実行すると生成されないため、backuplist.txt作業する結果はありませんtar

パイプからfind -iname直接withを使ってみましたが、ちょうど答えを受けました。tar-iname command does not exist

ターミナルで最初に出力を使用してfindから使用するとtar機能します。

私は何が間違っていましたか?

ここに画像の説明を入力してください。

ベストアンサー1

このスクリプトには2つの主な問題があります。

  1. パスは相対的です。つまり、実行時に次のhome/piものがあるとします。現在のディレクトリhome/piスクリプトのすべてのインスタンスを/home/pi

  2. このコマンドは、ファイル内のファイルをtarバックアップするためのものです。backuplist.txt今作成された方法では、tarファイル自体のみを含め、他のものは含まないアーカイブを取得します。backuplist.txt読みたいならコンテンツこのファイルの場合tar -zcvf "$DESDIR/$FILENAME" -T "$SRC"

  3. スクリプトには引用符のない変数もあります。

私の考えでは、あなたが欲しいのがこれです。

#!/bin/bash

TIME="$(date +%b-%d-%y)"
FILENAME="backup-$TIME.tar.gz"
DESDIR="/home/pi/backups"
SRC="/home/pi/backuplist.txt"

find /home/pi -iname '*.orig' -o -iname '*.py' >"$SRC"
tar -zcvf "$DESDIR/$FILENAME" -T "$SRC"

/home/piコマンドラインの内容はfindおおよその推測です。それがなければ、GNUはfind現在のディレクトリを使用すると仮定します。

おすすめ記事