You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地一个分区已满时,用两个分区镜像FTP服务器目录?

解决方案

1. 先明确rsync的FTP支持

rsync本身不直接支持FTP协议作为源,但可以通过lftp或curlftpfs将FTP服务器挂载为本地目录,再用rsync同步,这样就能利用rsync的增量同步、硬链接等核心功能。

2. 方案一:挂载FTP为本地目录后用rsync同步(推荐)

步骤1:挂载FTP到本地临时目录

用curlftpfs把FTP服务器挂载成本地目录(需先安装对应工具,如Debian/Ubuntu用apt install curlftpfs,RHEL/CentOS用yum install curlftpfs):

curlftpfs ftp://user:pwd@ftp....:21/ /mnt/ftp_mount

步骤2:同步旧分区与FTP(更新已有文件的变更)

仅更新旧分区中已存在的文件(含修改内容),跳过FTP新增的目录/文件,确保旧分区与FTP对应内容一致:

rsync -av --existing --delete /mnt/ftp_mount/ /export/old_partition/ --log-file=/export/d-4/download/sync_old_log.txt
  • -av:归档模式+详细输出,保留文件权限、时间戳等元数据
  • --existing:只同步本地已存在的文件,忽略FTP新增内容
  • --delete:删除旧分区中FTP已移除的文件(若无需严格镜像可省略)
  • --log-file:记录同步日志,用于后续导入数据库

步骤3:同步FTP新增内容到新分区,用硬链接避免重复存储

通过--link-dest参数,让新分区中已存在于旧分区的文件以硬链接形式存在(不占用额外空间),仅新增/修改的文件实际存储在新分区:

rsync -av --link-dest=/export/old_partition/ /mnt/ftp_mount/ /export/d-4/ --log-file=/export/d-4/download/sync_new_log.txt
  • --link-dest:指定参考目录,rsync会为源目录中存在于参考目录的文件创建硬链接,而非复制文件内容
  • 最终新分区会保留完整的FTP镜像结构,但仅新增/变更内容占用存储资源

步骤4:卸载FTP挂载

同步完成后卸载临时挂载:

umount /mnt/ftp_mount

3. 方案二:用lftp的mirror命令实现增量同步与分分区存储

无需挂载FTP,直接用lftp的mirror功能分两步完成同步:

步骤1:更新旧分区的已有内容

lftp -u user,pwd ftp://ftp....:21/ -e "mirror --only-newer --no-new-dir / /export/old_partition/; exit" > /export/d-4/download/sync_old_log.txt 2>&1
  • --only-newer:仅下载比本地文件更新的内容
  • --no-new-dir:不创建本地不存在的新目录,仅更新已有目录下的文件

步骤2:下载新增内容到新分区

lftp -u user,pwd ftp://ftp....:21/ -e "mirror --only-missing / /export/d-4/; exit" > /export/d-4/download/sync_new_log.txt 2>&1
  • --only-missing:仅下载新分区中不存在的文件(含新增目录),完整保留FTP的目录结构

4. 基于wget的优化方案(若坚持使用wget)

通过软链接让wget识别旧分区的已有文件,实现增量同步:

# 假设旧分区镜像目录为/export/old_partition/ftp_data,新分区目标目录为/export/d-4/ftp_data
mkdir -p /export/d-4/ftp_data
# 将旧分区的已有目录批量软链接到新分区
for dir in /export/old_partition/ftp_data/*; do
    ln -s "$dir" /export/d-4/ftp_data/
done
# 执行wget镜像,此时wget会检查软链接指向文件的时间戳,仅下载新增/修改的内容
wget --mirror --directory-prefix=/export/d-4/ftp_data/ --ftp-user=user --ftp-password=pwd ftp://ftp....:21/ --output-file=/export/d-4/download/download_log.txt
  • 注意:若目录结构复杂,需用脚本批量创建软链接,效率不如rsync或lftp方案

关键说明

  • 所有生成的日志文件可直接用于导入数据库,记录同步的文件路径、时间等信息
  • 硬链接方案不会额外占用存储,且新分区的镜像结构完整,访问体验与普通文件一致

内容的提问来源于stack exchange,提问作者Serendipia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:35:18