スクリプトでは、次のコマンドを使用してSFTPを使用してファイルを圧縮して転送できます。
zipfilename="Order_$(date +"%Y%m%d%H%M%S").zip"
echo "Start Execution" $(date +"%Y%m%d%H%M%S") >> "$logfile"
echo "Zipping Files" >> "$logfile"
zip $zipfilename order*.xml
echo "Zipping Success" >> "$logfile"
echo "put $zipfilename In" | sshpass -p $PSWRD sftp [email protected] >> "$logfile"
結果は次のとおりです。
sftp> put Order_20190830221440.zip In
Uploading Order_20190830221440.zip to /In/Order_20190830221440.zip
zipファイルが正常に転送されたことを確認できます。しかし、SFTPを介して解凍しようとするとエラーが発生します。次のコマンドを使用しています。
echo "unzip $zipfilename" | sshpass -p $PSWRD sftp [email protected] >> "$logfile"
エラーは次のとおりです。
sftp> unzip Order_20190830221440.zip
Invalid command.
私は両方のzip
方法を試しましたtar
。
何が問題なのか知っていますか?
答え1
SFTPを使用してリモートサーバーのファイルを解凍することはできません。それは不可能です。
サーバーへのシェルアクセス権がある場合は、シェルを使用してファイルを解凍できます。
sshpass -p $PSWRD ssh [email protected] unzip $zipfilename
シェルのアクセス権がないように見えるため、他のアクセス権(たとえば、一部のWebベースのコントロールパネル)がないと、サーバーはファイルを解凍できません。