非常に単純なスクリプトでエラーが発生します。スクリプトは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として実行しているため、権限に問題はありません。ユーザーのホームディレクトリに問題なく書き込むことができます。
何か案は?
生成されたファイル名をもう一度確認します。
/home/user/db_dump_12/02/2017_14:30:15.txt
02
というサブディレクトリに書き込もうとします。そのディレクトリが存在しない場合は、「そのようなファイルはありません」またはディレクトリ "が表示されます。
別の日付形式を使用することをお勧めします:
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"