web-dev-qa-db-ja.com

ファイルに書き込もうとしている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として実行しているため、権限に問題はありません。ユーザーのホームディレクトリに問題なく書き込むことができます。

何か案は?

2
rijo79

生成されたファイル名をもう一度確認します。

/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"
2
Kusalananda