2012-01-05 3 views
1

mysql 덤프를 만든 다음 다른 컴퓨터에 넣는 셸 스크립트를 만들려고합니다. 나는 열쇠가없는 ssh와 sftp를 벌써 설치했다. 아래 스크립트는 실행될 때 로컬 컴퓨터에 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

하나의 파일 (file_contains_put_command)에 mput/put 명령을 작성하고 아래 명령을 시도하십시오.

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