通过Linux FTP Server进行远程备份的核心步骤如下,结合工具实现自动化与安全性:
以vsftpd为例(Ubuntu/Debian为例):
sudo apt update && sudo apt install vsftpd
/etc/vsftpd.conf)listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES # 限制用户仅能访问主目录
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
sudo adduser backupuser
sudo passwd backupuser # 设置密码
lftp工具(推荐)步骤:
lftpsudo apt install lftp # Debian/Ubuntu
sudo yum install lftp # CentOS/RHEL
backup.sh)#!/bin/bash
LOCAL_DIR="/path/to/local/data" # 本地待备份目录
FTP_USER="backupuser"
FTP_PASS="your_password"
FTP_HOST="ftp.example.com"
FTP_DIR="/remote/backup/path"
# 使用lftp上传文件(支持递归、断点续传)
lftp -c "open -u $FTP_USER,$FTP_PASS ftp://$FTP_HOST; \
put -r $LOCAL_DIR $FTP_DIR; \
bye"
put -r递归上传目录,-c直接执行命令。chmod +x backup.sh
crontab -e)0 2 * * * /path/to/backup.sh >> /var/log/ftp_backup.log 2>&1 # 每天凌晨2点执行
ftp命令(基础版)适用场景:简单文件上传,不支持递归目录。
#!/bin/bash
LOCAL_DIR="/path/to/local/data"
FTP_USER="backupuser"
FTP_PASS="your_password"
FTP_HOST="ftp.example.com"
REMOTE_DIR="/remote/backup/path"
# 上传文件(需先打包为tar.gz)
tar -czvf backup.tar.gz -C $LOCAL_DIR .
ftp -inv $FTP_HOST <<EOF
user $FTP_USER $FTP_PASS
cd $REMOTE_DIR
put backup.tar.gz
bye
EOF
.netrc文件存储凭据(需配合lftp):# 在用户主目录创建.netrc
echo "machine ftp.example.com login backupuser password your_password" > ~/.netrc
chmod 600 ~/.netrc
然后在脚本中移除密码参数,lftp会自动读取.netrc。vsftpd支持FTPS(需安装vsftpd的SSL模块并修改配置)。echo "Backup started at $(date)" >> /var/log/ftp_backup.log)。lftp命令返回值,失败时发送告警(如通过邮件)。ftp ftp.example.com
ls /remote/backup/path
参考来源: