我为从服务器上传备份文件到ftp服务器编写了一个bash脚本,但我一直遇到错误。
Name (myftpserver:root): Permission denied.
Login failed.
Login with USER first.
Please login with USER and PASS.
Local directory now /backup01
Please login with USER and PASS.
Passive mode refused.
这是我的脚本:
#!/bin/bash
DATE=`date +%Y-%m-%d_%H%M`
LOCAL_BACKUP_DIR="/backup01"
DB_NAME="databasename"
DB_USER="root"
FTP_SERVER="randomIP"
FTP_USERNAME="myname"
FTP_PASSWORT="supersecret"
FTP_UPLOAD_DIR="/home/mydirectory/ftp/upload"
LOG_FILE=/backup01/backup-$DATE.log
mysqldump -u $DB_USER $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$DATE-$DB_NAME.sql.gz
ftp $FTP_SERVER << END_FTP
quote USER $FTP_USERNAME
quote PASS $FTP_PASSWORD
cd $FTP_UPLOAD_DIR
lcd $LOCAL_BACKUP_DIR
put "$DATE-$DB_NAME.sql.gz"
bye
END_FTP
if test $? = 0
then
echo "Database successfully uploaded to the FTP Server!"
echo "Database successfully created and uploaded to the FTP Server!" | mail -s "Backup from $DATE" my.email@whereever.com
else
echo "Error in database upload to Ftp Server" > $LOG_FILE
fi
可能有人能帮我,因为我已经尝试了在互联网上找到的所有方法。 我创建了一个 .netrc 文件。我配置了 vsftpd.conf,启用了被动模式、用户列表等等... 但是现在我不知道还需要做什么才能让这个脚本正常工作。而且我也不知道为什么它会尝试通过 root 连接...
也许有人能帮忙。 提前致谢。
myftpserver:root
是因为脚本在使用 ftp 连接到远程 ftp 服务器时是在root
下运行的。这与在 ftp 连接期间提供用户名不同。你可以手动使用 ftp 来验证这一点。 - GoinOffscp
是个好主意。它完美地运行了。谢谢。 - steff