クラスでは、学校がホストするリモート サーバーで作業する必要があります。これまでサーバー上に多くのファイルを作成してきましたが、それらをラップトップに転送したい場合や、誤ってディレクトリを削除したり、ばかげたエラーを起こしたりした場合に備えて、ファイルをバックアップしたいと考えています。ファイルをバックアップするためのチュートリアルとスクリプトを見つけたので、それを変更して、それがどのディレクトリにあるか(メインユーザーのディレクトリになります)とドキュメントへのcdを決定することにしました。また、ディレクトリ Backups が存在しない場合は作成します。私はまだこの種のスクリプトにかなり慣れていないので、追加のアドバイスや投稿リンクをいただければ幸いです。
コード:
#!/bin/bash
#######################################################
## Simple backup script..
## Created by Matthew Brunt: (openblue555@gmail.com)
## Licensed under GNU GPL v3 or later, at your option.
## http://www.gnu.org/licenses/gpl.html
##
## Further edited by Michael Garrison to backup the
## directory it is located in and print the contents.
#######################################################
mkdir -p Backup
#Defines our output file
OUTPUT= $( cd Backup && pwd )/backup_$(date +%Y%m%d).tar.gz
#Defines our directory to backup
BUDIR=$( cd Desktop && pwd )
#Display message about starting the backup
echo "Starting backup of directory $BUDIR to file $OUTPUT"
#Start the backup
tar -cZf $OUTPUT $BUDIR
#Checking the status of the last process:
if [ $? == 0 ]; then
#Display confirmation message
echo "The file:"
echo $OUTPUT
echo "was created as a backup for:"
echo $BUDIR
echo ""
echo "Items that were backed up include:"
for i in $BUDIR; do
echo $i
done
echo ""
else
#Display error message message
echo "There was a problem creating:"
echo $OUTPUT
echo "as a backup for:"
echo $BUDIR
fi
$OUTPUT
元のスクリプトが機能することはわかっており、変数を変更するまでは機能していました。現在、次の結果が得られます。
./backup.sh
./backup.sh: line 15: /Users/mgarrison93/Backup/backup_20121004.tar.gz: No such file
or directory
Starting backup of directory /Users/mgarrison93/Desktop to file
tar: no files or directories specified
There was a problem creating:
as a backup for:
/Users/mgarrison93/Desktop
ファイル名を受け入れていないことがわかりますが、これを修正する方法がわかりません。
元々持っていたものに変更$OUTPUT
してみましたが、正常に動作します。/Backups/file-name.tar.gz
問題は次のよう$( cd Backup && pwd )/backup_$(date +%Y%m%d).tar.gz
です。何が悪いのかわからない。