2016-10-06 2 views
0

私のVPSについては、私のVPSをバックアップするためのcronジョブで3時間ごとに実行されるものを作成しました。すべてのデータベース(この場合)は、WebDAVを介して接続されたストレージサービス上の新しいフォルダに移動さ​​れ、移動されます。WebDAVでディレクトリを作成するときにBashスクリプトが失敗する

昨日まで完璧に動作します。

mkdir: cannot create directory ‘/stack/VPS-Backups/Srv1/Database/07-10-2016_12:00’: No such file or directory

(それがうまくいかない)スクリプト:スクリプトは私にエラーを与える

#!/bin/bash 

DB_BACKUP="/stack/VPS-Backups/Srv1/Database/`date +%d-%m-%Y`_`date +%H:%M`" 

# Create the backup directory 
mkdir $DB_BACKUP 

私は/すでに次のことをprocees確認:

  • 再マウントのWebDAV
  • ディレクトリ構造 "/ stack/VPS-Backups/Srv1/Database"が存在するか確認してください。
  • URL/WebDAVののユーザー名/パスワードが
  • を変更していないストレージストレージの供給者は、私は何ができる事

を変更していないのですか?助けてくれてありがとう! :-)

+0

これはスクリプトですか?私はそれが失敗しているパスの前に '〜'があるのを見ます。 – heemayl

+0

申し訳ありませんが、私のせいです。打ち間違え。これを修正しました:) –

+1

この文脈では、「そのようなファイルやディレクトリはありません」というプレーンな読み方は、親ディレクトリが実際には存在しない*ということです。特別の請求、特別な証拠、&c。 –

答えて

2
#!/bin/bash 
dirname=$(date '+%Y%m%dT%H%M') # subset of an ISO 8601 date (only missing %S) 
cd /stack/VPS-Backups/Srv1/Database || exit 
mkdir -- "$dirname" 

顕著な変化はここにカプセル化:mkdirからcdアウト

  • ブレークは、失敗しているこれらの操作のどの明確にします。
  • ファイル名(portable filename character set)で有効になるようにPOSIXによって保証されていない文字を削除します。実際には、これはコロンが行く必要があることを意味します。

また、日付形式のガイドラインはISO 8601です。これは、他のソフトウェアがディレクトリ名をすぐに使用できる日付として解析できることを意味します。 YYYYMMDDを使用すると、MMDDYYYYとDDMMYYYYの混乱を防ぎ、名前のASCIIソート順を論理的なソート順に一致させるので、標準のUNIXツールを使用して範囲を選択することができます。

関連する問題