CentOS FTP Server数据同步方法
导读:CentOS FTP Server 数据同步方法 一、常用方案与适用场景 lftp mirror 镜像同步:适合纯 FTP 场景,支持断点续传、增量、删除远端多余文件,脚本化与定时任务友好。 LFTP + SFTP:当 FTP 仅用于发布...
CentOS FTP Server 数据同步方法
一、常用方案与适用场景
- lftp mirror 镜像同步:适合纯 FTP 场景,支持断点续传、增量、删除远端多余文件,脚本化与定时任务友好。
- LFTP + SFTP:当 FTP 仅用于发布、而同步通道可走 SSH 时,更安全,命令与 FTP 类似,适合跨公网传输。
- rsync 直连或 SSH 隧道:增量、高效、可校验,适合有 SSH 访问权限的服务器间同步或本地/远端目录镜像。
- 挂载 + 本地同步:用 sshfs 将远端目录挂载为本地盘,再用 rsync/lftp,适合“一台对外 FTP、另一台汇聚数据”的架构。
- vsftpd 基础配置要点:禁用匿名、启用本地用户写入、按需 chroot、必要时开启被动端口范围与日志,便于安全与可维护性。
二、方案一 lftp mirror 镜像同步(纯 FTP)
- 安装与准备
- 安装客户端:sudo yum install -y lftp
- 建议创建专用 FTP 账号与目录,设置合适的属主与权限(如 /home/ftpuser,权限 755/644)。
- 基本用法
- 上传(本地到远端,镜像):
lftp -c " open ftp://your_ftp_host user your_ftp_user your_ftp_pass lcd /path/to/local cd /path/to/remote mirror --reverse --delete --verbose --parallel=4 quit " - 下载(远端到本地,镜像):
lftp -c " open ftp://your_ftp_host user your_ftp_user your_ftp_pass lcd /path/to/local cd /path/to/remote mirror --delete --verbose --parallel=4 quit " - 常用参数:–reverse(上传)、–delete(保持两端一致)、–verbose(输出详情)、–parallel=N(并发)、–dry-run(演练)。
- 上传(本地到远端,镜像):
- 定时任务
- 示例:每天 02:00 同步并记录日志
0 2 * * * /usr/bin/lftp -c "open ftp://host; user user pass; lcd /local; cd /remote; mirror --reverse --delete --verbose" > > /var/log/ftp_mirror.log 2> & 1
- 示例:每天 02:00 同步并记录日志
- 说明
- 若 FTP 为被动模式,需在服务器端开放被动端口范围(如 30000–31000/tcp),客户端通常无需额外设置;仅开放 21/tcp 不足以完成数据连接。
三、方案二 LFTP + SFTP 或 rsync(更安全的传输)
- LFTP over SFTP(推荐替代 FTP)
lftp -u $USER,$PASS sftp://$HOST < < 'EOF' cd /remote/path lcd /local/path mirror --reverse --delete --verbose bye EOF- 适合跨公网、需要加密与密钥认证的场景;SFTP 基于 SSH,免明文口令。
- rsync over SSH(增量、高效)
- 远端到本地:
rsync -avz --delete -e ssh user@remote:/remote/path/ /local/path/ - 本地到远端:
rsync -avz --delete -e ssh /local/path/ user@remote:/remote/path/ - 定时备份示例(每日 02:00):
0 2 * * * /usr/bin/rsync -av --delete /var/ftp/ /backup/ftp/ > > /var/log/ftp_backup.log 2> & 1 - 说明:rsync 默认不删除目标端多余文件,加入 –delete 可保持镜像一致;适合有 SSH 访问权限的服务器。
- 远端到本地:
四、方案三 挂载 + 本地同步(sshfs)
- 适用架构:一台服务器(B)对外提供 FTP,另一台(A)产生数据;在 B 上用 sshfs 将 A 的目录挂载到 B 的 FTP 根目录下的子目录,再用 rsync/lftp 同步到 FTP 根目录,避免直接替换 FTP 用户根目录导致权限/可见性问题。
- 步骤
- 安装与挂载(B 上执行):
sudo yum install -y epel-release fuse-sshfs sudo mkdir -p /home/ftpuser/sync_src sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 \ userA@192.168.1.100:/home/origin_dir /home/ftpuser/sync_src - 同步到 FTP 根目录(按需使用 rsync 或 lftp;注意属主/权限与 SELinux)
rsync -av --delete /home/ftpuser/sync_src/ /home/ftpuser/ - 说明:挂载点不要直接覆盖 FTP 用户根目录;如需开机挂载,可将 sshfs 命令加入 /etc/fstab(建议使用 systemd 挂载或凭证文件)。
- 安装与挂载(B 上执行):
五、防火墙与 vsftpd 配置要点
- 防火墙
- FTP 控制端口:sudo firewall-cmd --permanent --add-port=21/tcp & & sudo firewall-cmd --reload
- 被动模式数据端口范围(示例 30000–31000/tcp):sudo firewall-cmd --permanent --add-port=30000-31000/tcp & & sudo firewall-cmd --reload
- 仅开放 21/tcp 会导致数据连接失败(尤其跨公网/NAT)。
- vsftpd 基础安全与可运维
- 建议配置:anonymous_enable=NO、local_enable=YES、write_enable=YES、chroot_local_user=YES、xferlog_enable=YES、connect_from_port_20=YES
- 如需加密传输,可启用 SSL/TLS(ssl_enable=YES,配置证书与允许的协议/套件)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS FTP Server数据同步方法
本文地址: https://pptw.com/jishu/747982.html
