ファイルに書き込もうとしたときのBashスクリプトエラー:そのファイルまたはディレクトリはありません。

ファイルに書き込もうとしたときのBashスクリプトエラー:そのファイルまたはディレクトリはありません。

非常に単純なスクリプトでエラーが発生します。スクリプトはpg_dumpallを実行し、出力をファイルに書き込むようになっていますが、生成されたファイルが存在しないというエラーが発生します。私はそれが存在しないことを知っています。だからそれを作りたい! :-/

#!/bin/bash
#remove previous day's dump and create new
rm -f /home/user/db_dump_*.txt;
pg_dumpall -U postgres -w > /home/user/db_dump_`date '+%d/%m/%Y_%H:%M:%S'`.txt;

結果:

db_dump.sh: line 4: /home/user/db_dump_12/02/2017_14:30:15.txt: No such file or directory 

dateコマンドはうまく機能し、ファイル名も完璧ですが、ファイルを生成する代わりにファイルが存在しないというエラーが発生します。権限の問題がないはずなので、スクリプトをrootとして実行しています。問題なくユーザーのホームディレクトリに書き込むことができます。

どんなアイデアがありますか?

答え1

生成されたファイル名をもう一度確認してください。

/home/user/db_dump_12/02/2017_14:30:15.txt

02というサブディレクトリに書き込みを試みますdb_dump_12。これらのディレクトリが存在しない場合は、「該当するファイルが存在しないか、目次「間違い。

別の日付形式を使用することをお勧めします。

dumpfile_date=$( date +"%F-%T" ) # or %Y%m%d-%H%M%S or something similar
pg_dumpall -U postgres -w > "/home/user/db_dump_$dumpfile_date.txt"

関連情報