【问题标题】:tar very large files to FTP directly splited into smaller filestar 非常大的文件到 FTP 直接拆分成更小的文件
【发布时间】:2013-09-24 12:36:19
【问题描述】:

我需要将大型服务器备份到 FTP 存储中。我可以 tar 所有文件,我可以使用 FTP 上传,我可以将 tar 文件拆分成许多小文件。

但问题是我不能一步完成这三个步骤。我可以直接 tar 到 FTP,我可以用 split 来 tar,但不能用 FTP 和 split 来 tar。

操作系统是 CentOS 6.2 文件大小超过800G

谢谢

【问题讨论】:

  • 为什么必须一步完成?您是否有理由不能编写一个 shell 脚本来完成所有三个步骤?如果磁盘空间有问题,那么使用 rsync 代替 tar-ing 和 FTP-ing 怎么样?
  • 步数不是问题,我无法将压缩文件保存在同一服务器中。我需要进行计划备份以压缩整个系统(每周)并将其保存在 FTP 服务器中,并每天进行增量备份。所以确定我需要一个脚本,但是如何? :D
  • 你能通过 SSH 连接到远程服务器吗?这里是directions for using tar with a remote server over an SSH tunnel
  • 不,它只是 ftp 或 sftp。

标签: linux ftp backup tar large-data


【解决方案1】:

要使用一个命令行 tar、拆分和 ftp 目录,您需要以下内容:

split 命令仅写入标准输出,因此您不能将文件传递给另一个命令(如 ftp)来处理它,为此您需要修补 split 以使用 --filter 选项来传递输出通过使用输出文件设置 $FILE 环境变量(文件名将是 x00、x01、x02 ...),无需将文件“即时”保存到硬盘。

1) 这是拆分补丁:http://lists.gnu.org/archive/html/coreutils/2011-01/txt3j8asgk8WH.txt 修补 split 命令后,您会在 man 中看到 split 命令中的 --filter 选项可用。

2) 安装ncftp ftp 客户端,这是一个很好的ftp 客户端,可以让你连接到ftp 并将文件放在一行命令中,而无需像普通的ftp 客户端那样等待ftp 响应。 ncftp 可用于与脚本等集成。

这里是使用 tar 压缩 /home 目录的命令,将其拆分为 100MB 的小文件并通过 FTP 传输每个文件

tar cvz -i /home | split -d -b 100m  --filter 'ncftpput -r 10 -F -c -u ftpUsername -p ftpPassword ftpHost $FILE'

请注意,我们使用了 ncftpput,它也会在单个命令中将 $FILE 传递给 ftp。 其他 ftp 选项: -r 10:允许您在失去与 ftp 的连接后尝试重新连接 10 次。 -F:使用被动模式。 -c:从标准输入获取输入。

要合并拆分文件(x00、x01、x02、x03 ...)以提取文件,请使用以下命令

cat x* > originalFile.tar

【讨论】:

    【解决方案2】:

    你可以制作一个shell脚本并使用

    tar zcf - /usr/folder | split -b 30720m - /usr/archive.tgz
    

    然后上传到 FTP 也是因为一旦你在做tar 并把它放到 FTP 上然后你怎么能分裂。

    【讨论】:

    • 感谢您的回复。
    • 我无法将压缩文件保存在同一个服务器,没有可用空间。
    • 这意味着您的空间不足,因此您必须确保有足够的空间来保存压缩文件或附加可用驱动器或分区来保存文件
    • 抱歉,没有更大的空间,我们有大约 1TB 的文件 :D 这不是一件容易的事 :D
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2013-06-01
    • 2014-10-22
    • 2013-04-05
    • 2017-08-25
    • 1970-01-01
    相关资源
    最近更新 更多