linux - tar 非常大的文件到 FTP 直接拆分成较小的文件

标签 linux ftp backup tar large-data

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

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

操作系统为CentOS 6.2 文件大小大于800G

谢谢

最佳答案

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

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

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

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

关于linux - tar 非常大的文件到 FTP 直接拆分成较小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981805/

相关文章:

C++读取多个文本文件(Ubuntu)

java - "hangs"上的 FTP 连接 "LIST"

elasticsearch - SonarQube带有ElasticSearch的备份还原过程

c - 使用c语言的telnet客户端,用于自动备份一系列路由器

linux - rsync 详细的最终统计数据但没有文件列表

cassandra - 正确的 cassandra key 空间恢复过程

linux - 使用expect后发送命令到远程机器

linux - 获取按时间排序的文件名

linux - 如何在 ssh 集群中更新 Julia

Python FTP 抓取和保存图像问题