非常に単純なスクリプトでエラーが発生します。スクリプトは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"