怎样备份Ubuntu FTP数据
备份Ubuntu FTP数据需根据场景选择合适方法,主要分为备份FTP服务器上的数据到本地和备份本地数据到FTP服务器两类,以下是具体操作步骤:
wget是Ubuntu默认安装的命令行工具,适合快速下载FTP文件或目录。
安装wget(若未安装):
sudo apt update && sudo apt install wget
备份单个文件:
wget -O /path/to/local/backup/filename ftp://ftp.example.com/path/to/remote/filename
备份整个目录(递归下载,避免覆盖已有文件):
wget --recursive --no-clobber --level=inf --no-parent ftp://ftp.example.com/path/to/remote/directory /path/to/local/backup
参数说明:
--recursive:递归下载目录;--no-clobber:不覆盖本地已有文件;--level=inf:无限递归子目录;--no-parent:不下载父目录(防止越界)。lftp支持镜像同步(保持本地与远程目录一致),适合定期备份。
安装lftp:
sudo apt update && sudo apt install lftp
备份整个目录(镜像同步,仅下载新增/修改文件):
lftp -u username,password ftp.example.com -e "mirror --reverse --delete --verbose /path/to/remote/directory /path/to/local/backup; quit"
参数说明:
--reverse:将远程目录同步到本地;--delete:删除本地多余文件(保持严格一致);--verbose:显示详细操作日志。rsync仅传输变化部分,节省带宽和时间,需FTP服务器支持SSH(端口22)。
安装rsync(若未安装):
sudo apt update && sudo apt install rsync
备份目录(增量同步,保留文件属性):
rsync -avz --delete -e ssh username@ftp.example.com:/path/to/remote/directory /path/to/local/backup
参数说明:
-a:归档模式(保留权限、时间等);-v:显示详细日志;-z:压缩传输;--delete:删除本地多余文件;-e ssh:通过SSH加密传输。若需将FTP数据打包为单个文件(如每日备份),可使用wget下载后用tar压缩。
下载目录:
wget -r --no-parent ftp://ftp.example.com/path/to/remote/directory -P /tmp
打包压缩:
tar -czvf /path/to/local/backup/ftp_backup_$(date +%Y%m%d).tar.gz -C /tmp path/to/remote/directory
参数说明:
-czvf:创建gzip压缩的tar包;$(date +%Y%m%d):生成当前日期作为文件名(如ftp_backup_20251107.tar.gz)。若需将本地重要数据(如数据库、网站文件)备份到FTP服务器,可使用以下方法:
上传单个文件:
lftp -u username,password ftp.example.com -e "put /path/to/local/file /path/to/remote/backup/file; quit"
上传整个目录(递归):
lftp -u username,password ftp.example.com -e "mirror --reverse /path/to/local/directory /path/to/remote/backup; quit"
参数说明:
--reverse:将本地目录同步到远程FTP。通过crontab设置定时任务,每天自动备份本地数据到FTP。
创建备份脚本(如/home/user/ftp_backup.sh):
#!/bin/bash
LOCAL_DIR="/path/to/local/data"
REMOTE_USER="ftp_username"
REMOTE_PASS="ftp_password"
REMOTE_HOST="ftp.example.com"
REMOTE_DIR="/path/to/remote/backup"
DATE=$(date +%Y%m%d)
# 使用lftp上传目录
lftp -u $REMOTE_USER,$REMOTE_PASS $REMOTE_HOST -e "mirror -R $LOCAL_DIR $REMOTE_DIR/$DATE; bye"
echo "Backup completed on $(date)" >> /var/log/ftp_backup.log
赋予执行权限:
chmod +x /home/user/ftp_backup.sh
设置cron任务(每天凌晨2点执行):
crontab -e
添加以下行:
0 2 * * * /home/user/ftp_backup.sh
说明:脚本会将本地/path/to/local/data目录备份到FTP服务器的/path/to/remote/backup/YYYYMMDD目录下,并记录日志。
ftp组);.netrc文件存储凭据(需设置权限为600):machine ftp.example.com
login username
password yourpassword
以上方法覆盖了Ubuntu环境下FTP数据备份的常见场景,可根据实际需求选择合适的方式。