2012-01-05 11 views
1

mysqlダンプを作成して別のコンピュータに配置するシェルスクリプトを作成しようとしています。私はすでにキーレスsshとsftpを設定しています。下記のスクリプトは、mysqlダンプファイルが実行されたときにローカルコンピュータにmysqlダンプファイルを作成し、エラーをスローしませんが、ファイル "dbdump.db"は決してリモートコンピュータに置かれません。私がsftp接続を実行し、手でコマンドを入力すると動作します。 mysql_backup.shシェルスクリプトでsftp putコマンドが失敗する

mysqldump --all-databases --master-data > dbdump.db 
sftp -b /home/tim [email protected] <<EOF 
put dbdump.db 
exit 
EOF 

答えて

3

内容は、あなたの場合には簡単なはずscpコマンドを使用してみてください。

scp dbdump.db [email protected]:/home/tim/dbdump.db 

sftpとscpの両方がSSHを使用しています。

+0

非常に良好で簡単です! –

1

mput/putコマンドを1つのファイル(file_contains_put_command)に書き込んで、以下のコマンドを試してください。

sftp2 -B file_contains_put_command /home/tim [email protected] >> log_file 

例:

echo binary > sample_file 
echo mput dbdump.db >> sample_file 
echo quit >> sample_file 
sftp2 -B sample_file /home/tim [email protected] >> log_file 
0

あなたの最初のアプローチはしかし作業オフ数文字です。あなたはsftpに、/ home/tim -b /home/timからのバッチコマンドを読むように指示しています。したがって、これを-b -に変更すると、stdinからバッチコマンドが読み込まれるはずです。

-b/home/timがリモートでディレクトリを変更する場合は、cd /home/timをこちらのドキュメントに追加できます。

mysqldump --all-databases --master-data > dbdump.db 
sftp -b - [email protected] <<EOF 
put dbdump.db 
exit 
EOF 
関連する問題