基本的にこれは私が答えたい質問です。
2)金曜日に実行すると、user2のホームディレクトリにあるすべてのファイルをバックアップするシェルスクリプト(fridaybackup.sh)を作成します。このスクリプトは、user2backup.tarというバックアップ(tar)ファイルとuser2backup.zipというzipファイルを生成します。
これが私が今まで持っているものです
#!/bin/sh
echo
echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
read INPUT
day=$(date +%A)
time=$(date +%m-%d-%y)
filename=user2backup${time}.tar.gz
srcdir='/export/home/student/user2'
desdir='/export/home/student/backupfolder'
case $INPUT in
N) echo "Bye." ;;
Y)
if [ "$day" = "Monday" ]
then
tar -cpzf $desdir/$filename $srcdir
else
echo "A full backup is done on Fridays only!!!"
fi ;;
*) echo "Error" ;;
esac
しかし、この結果が出てきます。
student@solaris:~/user2$ sh fridaybackup.sh
Do you want to create a full backup (Y=Yes, N=No) : Y
tar: /export/home/student/backupfolder/user2backup10-02-17.tar.gz: No
such file or directory
student@solaris:~/user2$ gedit fridaybackup.sh
どんな助けでもいいでしょう。よろしくお願いします。
答え1
コピー/貼り付けに問題があるようです。
変数は次のように設定する必要があります。
day=$(date +%A)
私はあなたがバックティックを使用していると思い、「月曜日」エラーに示されているように書式を設定すると消えます。
近くに文法エラーがあります。if
月曜日のエラー:見つかりません
Bash発生の14行目に示すように、設定が正しいことを証明してください。
( Monday = friday )
これはサブシェルをフォークし、Monday
プログラム名と= Friday
引数で実行されます。あなたが望むものではありませんか?
シェルテストで完成を使用
if [ "$day" = "Friday" ]
または
if test "$day" = "Friday"
したがって、正しいシェルは次のようになります。
#!/bin/sh
echo
echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
read INPUT
day=$(date +%A)
time=$(date +%m-%d-%y)
filename=user2backup$time.tar.gz
srcdir='/export/home/student/user2'
desdir='/export/home/student/backupfolder'
case $INPUT in
N) echo "Bye." ;;
Y)
if [ "$day" = "Friday" ]
then
tar -cpzf $desdir/$filename $srcdir
else
echo "A full backup is done on Fridays only!!!"
fi ;;
*) echo "Error" ;;
esac
答え2
read -p "Do you want to create a full backup (Y=Yes, N=No) : " INPUT
あなたの代わりに試してみてください:
echo "Do you want to create a full backup (Y=Yes, N=No) : \c"
read INPUT
編集:@Ramanが説明したように、変数宣言に間違いがありました。
filename
これは変数を宣言するための最良かつ安全な方法です。
filename="user2backup${time}.tar.gz"
答え3
この説明はユーザーに尋ねる必要はありません。自動的に実行できます。
#!/bin/sh
if [ $(date +%A) = Friday ]; then
TARFILE=/export/home/student/backupfolder/user2backup$(date +%m-%d-%y).tar
tar -cpf $TARFILE /export/home/student/user2
zip $TARFILE.zip $TARFILE
fi